我的WinForms应用程序具有MenuStrip
单项ToolStripMenuItem menuItem
,是通过MSVC的设计师添加的。
在代码中,我将新项目添加到menuItem
,然后我尝试在其DropDownItems
集合中找到它。我尝试了几种方法,但没有一种方法可以成功找到最近添加的项目。
public Form1()
{
InitializeComponent();
string name = "Name";
var nameItem = new ToolStripMenuItem(name);
menuItem.DropDownItems.Add(name);
menuItem.DropDownItems.Add(nameItem);
// query via string doesn't work
Debug.Assert(menuItem.DropDownItems[name] != null); // fails
Debug.Assert(menuItem.DropDownItems.ContainsKey(name)); // fails
Debug.Assert(menuItem.DropDownItems.Find(name, false).Length > 0); // fails
Debug.Assert(menuItem.DropDownItems.IndexOfKey(name) >= 0); // fails
// query via reference does
Debug.Assert(menuItem.DropDownItems.Contains(nameItem)); // passes
Debug.Assert(menuItem.DropDownItems.IndexOf(nameItem) >= 0); // passes
}
答案 0 :(得分:0)
当您致电Add()
时,您可以传入要显示的文字或项目本身。这就是为什么你的第一组测试失败而第二组测试失败的原因。
当您使用menuItem.DropDownItems.Add(name)
时,您尚未对其进行命名,因此您尝试按名称查找失败。
当您使用menuItem.DropDownItems.Add(nameItem)
时,您已添加了实际项目,并且该项目 已获得名称。