visual basic multiple toolstripmenuitems在点击时执行相同操作

时间:2014-08-12 15:32:57

标签: visual-studio-2013 onclick menuitem toolstripmenu

我是新来的。如果没有正确的措辞问题,请提前道歉。 我正在开发一个使用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

.... 我想知道是否有办法创造一个全球性的"默认"点击事件"对于默认情况下将完成相同操作的所有菜单项。我拥有存储在表格中的每个菜单项的所有相关信息,并希望避免创建"点击"对于每个项目。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以为ToolStripMenuItems的点击事件设置相同的处理程序 只需在事件的第一个Handles XXXMNU0039.Click之后添加,以便处理另一个ToolStripMenuItem,依此类推

显然,问题是如何区分调用相同事件处理程序的各种ToolStripMenuItem。但是在事件参数中,有一个Sender对象代表调用该事件的当前ToolStripMenuItem

只需DirectCastToolStripMenuItem并阅读其名称即可将正确的参数传递给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