我正在构建一个依赖于读取系统上可用的SerialPorts并填充menuStrip项目的程序。我已经能够填充menuStrip子菜单,但我仍然坚持如何将click事件添加到动态填充列表中。我的代码如下:
public void getPorts()
{
int count = 0;
string[] ports = SerialPort.GetPortNames();
foreach(string port in ports)
{
//MessageBox.Show("Serial Port " + port + " found!");
ToolStripItem subItem = new ToolStripMenuItem(port);
portMenuItem.DropDownItems.Add(port);
count += 1;
}
}
我觉得有些东西需要进入foreach
循环,但我无法找到它。任何帮助都会很棒!
答案 0 :(得分:2)
只需为您要添加的每个菜单项分配处理程序:
input
您可以通过将事件发件人对象转换为菜单项类型来获取在处理程序中单击的项目:
ToolStripItem subItem = new ToolStripMenuItem(port);
subItem.Click += MenuItem_Click;
// you should add menu item to some menu here
更新 - 将项目添加到private void MenuItem_Click(object sender, EventArgs e)
{
var menuItem = (ToolStripMenuItem)sender;
var port = menuItem.Text;
// ...
}
:
ToolStripDropDownButton