【问题标题】:ToolStrip Control, how to programmatically access click eventToolStrip 控件,如何以编程方式访问点击事件
【发布时间】:2026-02-23 18:30:01
【问题描述】:

我有以下代码:

Private holdAllDataFromFile As New list(Of String)

holdAllDataFromFile =  ReadWrite.ReadAll(FILE_PATH) 'Uses custom class to read/write.

For Each item In holdAllDataFromFile.AsEnumerable 
    menuConnections.DropDownItems.Add(finalData(1).tostring ) 'save to menu
Next

在运行时,我希望能够单击这些菜单项并让它们响应事件,我不确定如何以编程方式访问它们,因为可能有 1、4、10 个不同的菜单项,全部用不同的名字。

我正在查看类似于我的this post,但我不确定这是否是我完成此任务的正确方法。有什么想法吗?

谢谢

【问题讨论】:

  • 其他帖子上的技术对我来说看起来不错。

标签: vb.net toolstrip


【解决方案1】:

先把你的点击事件代码存起来:

Private Sub DataFile_Click(ByVal sender As Object, ByVal e As EventArgs)
  MessageBox.Show("Clicked on " & DirectCast(sender, ToolStripMenuItem).Text)
End Sub

“sender”参数将是您添加的 ToolStripMenuItem。

然后可以更改您的循环以添加事件处理程序:

For Each item In holdAllDataFromFile
  menuConnections.DropDownItems.Add(item, _
                                    Nothing, _
                                    AddressOk DataFile_Click)
Next

我将“finalData(1).tostring”更改为“item”,因为这是您的循环变量。尚不清楚该 finalData 变量来自何处或与循环有什么关系。我也摆脱了 AsEnumerable,因为 holdAllDataFromFile 已经是一个 List(of String)。

【讨论】: