2016-09-06 14 views
0

Я добавляю MenuStrips динамически на основе количества доступных портов rs232. Дело в том, что я хочу получить доступ к тексту управления, чтобы использовать их в соединении.Dynamic Menustrip access 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