2016-09-06 57 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