动态菜单条访问 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
我正在根据可用的 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