有没有办法在不使用foreach循环的情况下为集合中具有特定标记的项目获取ToolStripMenuItem.DropDownItems
的索引?
我目前正在这样做:
private void button1_Click(object sender, EventArgs e)
{
Form2 myForm2 = new Form2();
myForm2.OnTemplateUpdated += new Form2.TemplateUpdatedHandler(myForm2_OnTemplateUpdated);
myForm2.Show();
}
void myForm2_OnTemplateUpdated(Form s, TemplateUpdatedEvent e)
{
int index = 0;
foreach (ToolStripMenuItem myMenuItem in templatesToolStripMenuItem.DropDownItems)
{
if ((string)myMenuItem.Tag == e.TemplateId)
{
templatesToolStripMenuItem.DropDownItems[index].Text = e.NewName;
break;
}
index++;
}
}
我知道templatesToolStripMenuItem.DropDownItems
有IndexOf()
方法,但我没有运气试图像这样使用它:
int menuItemIndex = templatesToolStripMenuItem.DropDownItems
.IndexOf(new ToolStripMenuItem() { Tag = e.TemplateId });
menuItemIndex
总是-1
...也许我使用的方法不正确?
答案 0 :(得分:1)
您可以为DropDownItems
中与Tag
对应的项目指定名称。例如:
templatesToolStripMenuItem.DropDownItems.Add(new ToolStripMenuItem("Item text") { Tag = 1, Name = "item1" });
因此,您可以按如下方式获得所需的项目:
templatesToolStripMenuItem.DropDownItems["item" + e.TemplateId].Text = e.NewName;