我有一个窗体,它在加载事件时检索数据并填充一些菜单项。我添加菜单项时使用
Viewer.AudioTrackToolStripMenuItem.DropDownItems.Add(myValue)
创建的菜单项数量并不总是相同的。有时是2,有时是4,这取决于要检索的数据。
由于菜单项是在“运行时”期间创建的,所以现在如何在用户单击/选择菜单项时拦截(我的意思是我不知道控件的名称及其单击事件)。如果菜单项在手之前就已经知道了,那么我只需在设计时创建菜单项,我就有了单击事件,但现在没有了。
任何帮助都将不胜感激。谢谢您。
编辑:你让我走上正轨,但我仍然收到一些错误消息。为了澄清,代码如下:
myValue = TextBetween(value1, "s|", "|e") 'myValue is the result of a function
'where myValue is a string
myValue.click += New System.EventHandler(myValue_Click) 'ERROR
Me.AudioTrackToolStripMenuItem.DropDownItems.Add(myValue)
现在,如果我运行代码,会得到以下错误:
1)“click”不是“string”的成员
2)委托“System.EventHandler”需要“AddressOf”表达式或lambda表达式作为其构造函数的唯一参数。
上面的错误可能是因为我的菜单项是根据变量(myvalue)的结果命名的吗?
伊迪丝2:我用下面的代码使一切正常工作:
Dim menuItem As ToolStripMenuItem
myValue = TextBetween(value1, "s|", "|e")
menuItem = New ToolStripMenuItem(myValue)
Me.AudioTrackToolStripMenuItem.DropDownItems.Add(MenuItem.ToString, Nothing, AddressOf ToolStripMenuItem_Click)
然后我添加了以下子项:
Private Sub ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim menuItem As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
If menuItem IsNot Nothing Then
'item just clicked.
MessageBox.Show(menuItem.Text)
End If
End Sub