如何获取触发上下文菜单项的索引

时间:2010-05-19 02:31:56

标签: c# .net winforms

我想确定所选上下文菜单项的索引。但我不想为每个菜单项构建一个独特的事件处理程序......我该怎么做

MenuItem mi=   StatusContextMenu.MenuItems.Add("Set option");
  mi.MenuItems.Add(0,new MenuItem("Set to A", new EventHandler(SetLetter)) );
  mi.MenuItems.Add(1,new MenuItem("Set to B", new EventHandler(SetLetter)));
  mi.MenuItems.Add(2,new MenuItem("Set to C ", new EventHandler(SetLetter)));
  mi.MenuItems.Add(3,new MenuItem("Set to D", new EventHandler(SetLetter)));

private void SetLetter(object sender, System.EventArgs e)
{
  index = ????
}

C#,。net 2.0

1 个答案:

答案 0 :(得分:3)

您可以投射“sender”参数(强制转换为MenuItem)以查找mi.MenuItems集合中的索引。

或者,我会使用匿名函数设置事件处理程序......

E.g。

mi.MenuItems.Add(0,new MenuItem("Set to A", (s, e) => SetLetter("A"));

然后你有SetLetter:

private void SetLetter(string letterToSetTo)
{
}