Reputation: 121
I don't seem to find the trick to dynamically add ContextMenu items of type TextBox so that I can show a ToolTextTip, capture user input text o I've tried several approaches but no luck. The following code works but only adds a 'normal' item to the ContextMenu. I can make it work if manually adding on form Design, but I don't think that's right way.
For Each check_box As Control In Me.Controls
If (TypeOf check_box Is CheckBox) Then
AddHandler check_box.MouseClick, AddressOf CheckBox_pressed
Dim context_menu As New ContextMenu With {.Name = check_box.Name}
Dim menu_item_1 As New MenuItem With {.Text = "save"}
context_menu.MenuItems.Add(menu_item_1)
check_box.ContextMenu = context_menu
End If
Next
But this is not valid:
For Each check_box As Control In Me.Controls
If (TypeOf check_box Is CheckBox) Then
AddHandler check_box.MouseClick, AddressOf CheckBox_pressed
Dim context_menu As New ContextMenu With {.Name = check_box.Name}
Dim menu_item_1 As New MenuItem With {.Text = "save"}
Dim menu_item_2 As New ToolStripTextBox With {.ToolTipText = "Button Name"}
context_menu.MenuItems.Add(menu_item_1)
context_menu.MenuItems.Add(menu_item_2) ' not valid
check_box.ContextMenu = context_menu
End If
Next
Hope I clear on my doubt. Thanks for the support.
Upvotes: 0
Views: 509
Reputation: 18310
You're not using the right control. ContextMenu
is a wrapper around the native Windows context menu, whereas ContextMenuStrip
is a pure .NET implementation which supports text boxes and other kinds of items.
Change your code to:
Dim context_menu As New ContextMenuStrip With {.Name = check_box.Name}
Dim menu_item_1 As New ToolStripMenuItem With {.Text = "save"}
Dim menu_item_2 As New ToolStripTextBox With {.ToolTipText = "Button Name"}
context_menu.Items.Add(menu_item_1)
context_menu.Items.Add(menu_item_2)
check_box.ContextMenuStrip = context_menu
Upvotes: 2