如何防止在 c# 的 MenuStrip 中多次添加项目?
How to prevent adding item more than once at MenuStrip in c#?
我在 windows 表单应用程序中使用 menuStrip,我想以编程方式将可用端口添加为子菜单。我使用 mouseHover 来执行此操作,但它会在每次移动中添加相同的项目 action.I 意味着它会在每次移动操作中添加项目。我怎样才能防止这种情况并实现一次添加项目(端口)。
这是我的代码;
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);
}
}
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);
}
}
这样,如果项目已经添加,函数将简单地 return。
试试这个
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);
}
}
您可以使用 LINQ 查询仅 select 唯一值并执行相同的过程。
string[] uniques = ports.Distinct().ToArray();
我在 windows 表单应用程序中使用 menuStrip,我想以编程方式将可用端口添加为子菜单。我使用 mouseHover 来执行此操作,但它会在每次移动中添加相同的项目 action.I 意味着它会在每次移动操作中添加项目。我怎样才能防止这种情况并实现一次添加项目(端口)。
这是我的代码;
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);
}
}
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);
}
}
这样,如果项目已经添加,函数将简单地 return。
试试这个
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);
}
}
您可以使用 LINQ 查询仅 select 唯一值并执行相同的过程。
string[] uniques = ports.Distinct().ToArray();