如何动态删除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");
删除姓名的正确方法是什么?
答案 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"]);
同样,太糟糕了,我无法立即测试以获得明确的答案。