我似乎没有找到动态添加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
希望我明白我的怀疑。 感谢您的支持。
答案 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