从动态删除ToopStripMenuItem中的项目

时间:2011-06-25 00:12:30

标签: c# winforms

如何动态删除ToolStripMenu项目。我有两个事件触发一个添加名称,一个删除名称。添加名称有效。删除没有。当我调试我的删除时,我可以在DropDownItems中看到{Poco}。但是,当我调用删除时,它不会被删除

// Adding items works as expected
ToolStripMenuItem mi = new ToolStripMenuItem("Poco");
mi.CheckOnClick = true;
myToolStripMenuItem.DropDownItems.Add(mi);

我尝试了很多东西..我认为可行的是这个

// This does not work .. how do i fix this?
myToolStripMenuItem.DropDownItems.RemoveByKey("Poco");

删除姓名的正确方法是什么?

1 个答案:

答案 0 :(得分:7)

ToolStripItemCollection.Item属性允许您通过项目名称进行搜索 - 只要它是为对象本身设置的 - 所以如果我假设一个人不能添加重复的字符串作为菜单项,则用文本初始化对象显示及其名称应该可以让您以后删除它:

ToolStripMenuItem mi = new ToolStripMenuItem("Poco"){ Name = "Poco" };

然后继续进行处理,使用相同的代码将其删除(我假设它应该有效):

//Should now work based on MS's comment for the Name property:
//The Name property can be used as a key into the ToolStripItemCollection.
myToolStripMenuItem.DropDownItems.RemoveByKey("Poco");

我遗憾的是目前无法测试它,在这台Mac上没有.NET。 :-)但是,我很确定你可以通过直接引用集合中的对象来删除()

myToolStripMenuItem.DropDownItems.Remove(myToolStripMenuItem.DropDownItems["Poco"]);

同样,太糟糕了,我无法立即测试以获得明确的答案。