SirAleXbox
SirAleXbox

Reputation: 121

Adding ToolStripTextBox to ContextMenu itens using code

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

Answers (1)

Visual Vincent
Visual Vincent

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

Related Questions