如何在c#中的MenuStrip中多次阻止添加项目?

时间:2017-06-16 08:08:28

标签: c# winforms mouseevent menustrip

我在windows窗体应用程序中使用menuStrip,我想以编程方式将可用端口添加为subMenu。我使用了mouseHover来做这个,但它在每个hoving动作中添加相同的项目。我的意思是它在每个hoving动作中添加项目。如何防止这种情况并实现一次添加项目(端口)。

这是我的代码;

   String[] ports = SerialPort.GetPortNames();

private void cOMToolStripMenuItem_MouseHover(object sender, EventArgs e)
    {
        foreach (var item in ports)
        {
            ToolStripItem subItem = new ToolStripMenuItem(item);
            cOMToolStripMenuItem.DropDownItems.Add(subItem);
        }
    }

3 个答案:

答案 0 :(得分:1)

private void cOMToolStripMenuItem_MouseHover(object sender, EventArgs e)
{
    if(cOMToolStripMenuItem.DropDownItems.Count > 0)
        return;

    foreach (var item in ports)
    {
        ToolStripItem subItem = new ToolStripMenuItem(item);
        cOMToolStripMenuItem.DropDownItems.Add(subItem);
    }
}

这样,如果已经添加了项目,函数将只返回。

答案 1 :(得分:0)

试试这个

private void cOMToolStripMenuItem_MouseHover(object sender, EventArgs e)
{
    cOMToolStripMenuItem.DropDownItems.Clear(); 
    foreach (var item in ports)
    {
        ToolStripItem subItem = new ToolStripMenuItem(item);
        cOMToolStripMenuItem.DropDownItems.Add(subItem);
    }
}

答案 2 :(得分:0)

您可以使用LINQ查询仅选择唯一身份并执行相同的过程。

string[] uniques = ports.Distinct().ToArray();