使用代码将ToolStripTextBox添加到ContextMenu itens

时间:2018-04-10 13:30:48

标签: .net vb.net

我似乎没有找到动态添加TextBox类型的ContextMenu项目的技巧,以便我可以显示ToolTextTip,捕获用户输入文本o 我尝试了几种方法,但没有运气。以下代码有效,但只向ContextMenu添加“普通”项。 如果手动添加表单设计,我可以使它工作,但我不认为这是正确的方式。

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

但这无效:

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

希望我明白我的怀疑。 感谢您的支持。

1 个答案:

答案 0 :(得分:2)

您没有使用正确的控件。 ContextMenu是本机Windows上下文菜单的包装器,而ContextMenuStrip是纯.NET实现,支持文本框和其他类型的项目。

将您的代码更改为:

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