2016-09-06 1 views
0

J'ajoute dynamiquement MenuStrips en fonction du nombre de ports rs232 disponibles. La chose est que je veux accéder au texte des contrôles afin de les utiliser dans la connexion.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 

Maintenant, je veux ajouter un événement MenuCOMclick où l'un des menus est cliquée, tous les autres ne sont pas cochées.

J'ai essayé de créer un tableau de contrôles, mais les menustrips ne fonctionnent pas comme ça .. Comment puis-je faire ça?

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

Merci

+0

Que voulez-vous dire par "tous les autres sont décochés"? – jonathana

+0

pas "sont décochés", désolé. Je veux les décocher tous sauf celui sur lequel je clique .. Et comment y accéder pour savoir lequel est coché, pour l'utiliser plus tard dans mon programme – noidea

Répondre

0

thats le moyen d'accéder à ToolStripMenuItems dans votre MenuStrip, Notez que si vous souhaitez accéder à la sender (le contrôle qui a été soulevé l'événement), vous devez jeter l'expéditeur au type de contrôle.

Vous pouvez également parcourir tous les ToolStripMenuItems. lire mes commentaires, j'espère que ça aide.

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