0

我刚来这地方。因此,如果问题措辞不当,请提前道歉。我正在开发一个在 MenuStrip 中使用多个菜单项的应用程序(VS2013,Visual Basic)。单击项目时,将调用相同的函数 - 创建选项卡并加载适当的表单。IE

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

....我想知道是否有一种方法可以为所有菜单项创建一个“全局”默认“点击事件”,默认情况下会完成相同的事情。我将每个菜单项的所有相关信息都存储在一个表格中,并希望避免为每个项目创建“点击”。

提前致谢。

4

1 回答 1

0

你可以为你的 click 事件使用相同的处理程序ToolStripMenuItems
只需添加,在第一个Handles XXXMNU0039.Click事件之后为另一个处理ToolStripMenuItem,依此类推

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

只需DirectCast到 aToolStripMenuItem并读取其名称即可将正确的参数传递给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
于 2014-08-12T15:44:07.437 回答