我有一个VUser ID | Load Generator
---------|---------------
1 | vm-1
2 | vm-2
3 | vm-1
4 | vm-2
5 | vm-1
6 | vm-2
我需要检查它是否有一个带有特定名称的子菜单,如果它存在,则向该子菜单添加一个新菜单项,如果没有,则创建子菜单并添加该项目到新的子菜单。
ToolStripMenuItem
可能只是因为我不了解菜单系统的实际工作方式,但似乎我无法在菜单对象中添加项目。
答案 0 :(得分:1)
您的子菜单是ToolStripDropDownItem
吗?
TooLStripItemCollection
中的对象都是ToolStripItem
类型的对象。您可能需要将找到的项目强制转换为派生类ToolStripDropDownItem
。
这样,您就可以访问其DropDownItems
集合,该集合是另一个ToolStripItemCollection
,并且具有Add
,AddRange
和Insert
方法。
我自己并没有与ToolStripDropDownItem
合作,但那是我开始的道路。
由bwoogie编辑: 最终代码:
ToolStripMenuItem tsmi = new ToolStripMenuItem();
tsmi.Text = item.Name;
tsmi.Click += node_Click;
ToolStripItemCollection nodeMenu = nodesToolStripMenuItem.DropDownItems;
for (int i = 0; i < nodeMenu.Count; i++) {
if (item.Category.Equals(nodeMenu[i].Text)) {
((ToolStripMenuItem)nodeMenu[i]).DropDownItems.Add(tsmi);
} else {
ToolStripItem newtsi = nodeMenu.Add(item.Category);
((ToolStripMenuItem)newtsi).DropDownItems.Add(tsmi);
}
}