0

VB.NET
在打开菜单项(即顶级菜单项)时,我已在运行时将 ToolStripMenuItem(即 DropDownItem)添加到菜单项。

我在运行时添加的 ToolStripMenuItems 是当前项目中活动的表单的名称。

每当单击具有特定表单名称的 ToolStripMenuItem 时,都应为该表单提供焦点。

如何为动态添加的 ToolStripMenuItem 事件执行所需的代码?

Private Sub WindowToolStripMenuItem_DropDownOpening(sender As Object, e As System.EventArgs) Handles WindowToolStripMenuItem.DropDownOpening
        WindowToolStripMenuItem.DropDown.Items.Clear()

        For Each Form In My.Application.OpenForms
            If Not Form.name = frmLogin.Name And Not Form.name = Me.Name Then
                Dim tmiForm = New ToolStripMenuItem()
                tmiForm.Name = Form.name
                tmiForm.Text = Form.text
                WindowToolStripMenuItem.DropDownItems.Add(tmiForm)
            End If
        Next

    End Sub


我想将焦点放在基于 tmiForm 的点击事件的表单上......
我尝试在网上搜索我只得到 C# 的结果

4

3 回答 3

3

使用AddHandler

AddHandler tmiForm.Click, AddressOf ClickHandler

这里是你如何写你的ClickHandler

Public Sub ClickHandler(ByVal sender As Object, ByVal e As EventArgs)
  'for a condition based on a ToolStripMenuItem that fired it
  'If CType(sender, ToolStripMenuItem).Name ...
End Sub
于 2013-03-19T14:44:39.723 回答
0

试试这个-

Private Sub clickeventhandler(sender As Object, e As EventArgs)
    For Each Form In My.Application.OpenForms
        If CType(sender, ToolStripMenuItem).Name = Form.Name Then
            Form.Focus()
            Exit Sub
        End If
    Next
End Sub

您以前的代码似乎很好,只需添加一行。

WindowToolStripMenuItem.DropDownItems.Add(tmiForm)

写这个——

AddHandler tmiForm.Click, AddressOf clickeventhandler
于 2013-03-19T15:45:29.083 回答
0

我使用了一种更简单的方法。单击菜单栏图标时,窗口右上角会出现一个小箭头。单击箭头打开菜单属性窗口。您可以设置可见属性来控制将在初始菜单上看到的内容。您还可以在代码中设置或清除可见属性:

    Public Sub MenuManage(Wayside As Integer, Vehicle As Integer, _
    System As Integer, Tools As Integer, Reports As Integer, _
    Edit As Integer, Zoom As Integer)

    Main.WaysideToolStripMenuItem.Visible = Wayside
    Main.VehicleToolStripMenuItem.Visible = Vehicle
    Main.SystemToolStripMenuItem.Visible = System
    Main.ToolsToolStripMenuItem1.Visible = Tools
    Main.ReportsToolStripMenuItem.Visible = Reports
    Main.EditToolStripMenuItem.Visible = Edit
    Main.ZoomToolStripMenuItem.Visible = Zoom

    End Sub

在 Load 和 FormClosed 事件代码中,控制菜单上显示的内容:

调用 MenuManage(真、真、真、真、真、假、假)

于 2014-03-17T22:30:37.570 回答