我是新来的。如果没有正确的措辞问题,请提前道歉。 我正在开发一个使用MenuStrip中的多个菜单项的应用程序(VS2013,Visual Basic)。单击项目时,将调用相同的函数 - 创建选项卡并加载适当的表单。 即。
Private Sub XXXMNU0039_Click(sender As Object, e As EventArgs) Handles XXXMNU0039.Click
Dim f1 As New frm_B05_01_SalesQuotes
Dim imgnm As String = "XXXMNU0039"
Call XXXTabPages("Sales Quotes", f1, imgnm)
End Sub
Private Sub XXXMNU0040_Click(sender As Object, e As EventArgs) Handles XXXMNU0040.Click
Dim f1 As New frm_B05_03_SalesQuotesReports
Dim imgnm As String = "XXXMNU_Reports"
Call XXXTabPages("Sales Quotes Reports", f1, imgnm)
End Sub
.... 我想知道是否有办法创造一个全球性的"默认"点击事件"对于默认情况下将完成相同操作的所有菜单项。我拥有存储在表格中的每个菜单项的所有相关信息,并希望避免创建"点击"对于每个项目。
提前致谢。
答案 0 :(得分:0)
您可以为ToolStripMenuItems
的点击事件设置相同的处理程序
只需在事件的第一个Handles XXXMNU0039.Click
之后添加,以便处理另一个ToolStripMenuItem
,依此类推
显然,问题是如何区分调用相同事件处理程序的各种ToolStripMenuItem。但是在事件参数中,有一个Sender对象代表调用该事件的当前ToolStripMenuItem
。
只需DirectCast到ToolStripMenuItem
并阅读其名称即可将正确的参数传递给XXXTablPages
方法
Private Sub menuItemHandler_Click(sender As Object, e As EventArgs) _
Handles XXXMNU0039.Click, XXXMNU0040.Click
Dim f1 As New frm_B05_01_SalesQuotes
Dim itm = DirectCast(sender, ToolStripMenuItem)
Dim imgnm As String = item.Name
Call XXXTabPages("Sales Quotes", f1, imgnm)
End Sub