2016-09-06 53 views
0

我正在基于可用的rs232端口数量动态添加MenuStrips。 事情是我想访问控制文本,以便在连接中使用它们。动态Menustrip访问vb.net

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其中点击菜单中的一个,所有的人都是选中。

我试图创建一个控件数组,但是这些menustrips不能像那样工作。 我该怎么做呢?

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

谢谢

+0

你是什么意思“所有其他人都没有检查”? – jonathana

+0

不“未选中”,对不起。我想取消所有除了我点击的所有人。以及如何访问它们以便知道哪一个被选中,稍后在我的程序中使用 – noidea

回答

0

这就是访问ToolStripMenuItems在MenuStrip, 请注意,如果您要访问的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