C#为动态menuStrip项目分配单击操作

时间:2017-03-22 23:28:56

标签: c# winforms menustrip

我正在构建一个依赖于读取系统上可用的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循环,但我无法找到它。任何帮助都会很棒!

1 个答案:

答案 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