动态查找和创建子菜单

时间:2015-05-17 22:16:54

标签: c# winforms

我有一个VUser ID | Load Generator ---------|--------------- 1 | vm-1 2 | vm-2 3 | vm-1 4 | vm-2 5 | vm-1 6 | vm-2 我需要检查它是否有一个带有特定名称的子菜单,如果它存在,则向该子菜单添加一个新菜单项,如果没有,则创建子菜单并添加该项目到新的子菜单。

ToolStripMenuItem

可能只是因为我不了解菜单系统的实际工作方式,但似乎我无法在菜单对象中添加项目。

1 个答案:

答案 0 :(得分:1)

您的子菜单是ToolStripDropDownItem吗?

TooLStripItemCollection中的对象都是ToolStripItem类型的对象。您可能需要将找到的项目强制转换为派生类ToolStripDropDownItem

这样,您就可以访问其DropDownItems集合,该集合是另一个ToolStripItemCollection,并且具有AddAddRangeInsert方法。

我自己并没有与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);
    }
}