动态地从ToopStripMenuItem中删除Items
本文关键字:删除 Items ToopStripMenuItem 动态 | 更新日期: 2023-09-27 18:00:15
如何动态删除ToolStripMenu项。我有两个触发事件,一个用于添加名称,另一个用于删除名称。添加名称有效。删除不会。当我调试我的移除时,我可以在DropDownItems中看到{Poco}。然而,当我调用remove时,它不会被删除
// 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");
删除名称的正确方法是什么?
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。:-)但是,我确信您可以通过直接引用集合中的对象来Remove()它:
myToolStripMenuItem.DropDownItems.Remove(myToolStripMenuItem.DropDownItems["Poco"]);
再说一次,很遗憾我不能马上测试一个确切的答案。