动态菜单条访问 vb.net

Dynamic Menustrip access vb.net

我正在根据可用的 rs232 端口数动态添加 MenuStrip。 问题是我想访问控件文本以便在连接中使用它们。

Private Sub FormConnection_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    myPort = IO.Ports.SerialPort.GetPortNames()

    Dim Ports As Array = CType(myPort, Object())
    If Ports.Length = 0 Then
        MessageBox.Show("No connections available.")
    Else

        Dim PortsLength As Integer = Ports.Length
        For Length As Integer = 0 To PortsLength - 1

            Dim Item As New ToolStripMenuItem(Ports(Length).ToString, Nothing, _
            New EventHandler(AddressOf MenuCOMclick))
            Item.CheckOnClick = True
            Item.Name = "COMDYN" + Length.ToString
            PortsToolStripMenuItem.DropDownItems.Add(Item)
        Next
End If

现在我想添加一个事件 MenuCOMclick 其中一个菜单被单击,所有其他菜单都未选中。

我试图创建一个控件数组,但菜单条不是那样工作的.. 那我该怎么做呢?

Private Sub MenuCOMclick(ByVal sender As Object, ByVal e As EventArgs)
   ???
   ???
   ???
End Sub

谢谢

这就是在 MenuStrip 中访问 ToolStripMenuItems 的方法, 请注意,如果您想访问 sender(引发事件的控件),您需要将发送者转换为控件类型。

您还可以迭代所有 ToolStripMenuItems。阅读我的评论,希望对您有所帮助。

Private Sub MenuCOMclick(ByVal sender As Object, ByVal e As EventArgs)
    ' thats how you can check the name of the sender
    MsgBox(CType(sender, ToolStripMenuItem).Name)
    ' thats how you can itterate all ToolStripMenuItem 
    For Each itm As ToolStripMenuItem In MenuStrip1.Items
        For Each Childitm As ToolStripMenuItem In itm.DropDownItems
            MsgBox(Childitm.Name) ' show name of the item
            ' example to access all items properties accept the sender
            If Childitm.Name <> CType(sender, ToolStripMenuItem).Name Then
                itm.ForeColor = Color.Beige
            End If
        Next
    Next
End Sub