как получить индекс элемента контекстного меню стрельбы - PullRequest
1 голос
/ 19 мая 2010

Я бы хотел определить индекс выбранного пункта контекстного меню. Но я не хочу создавать уникальный обработчик событий для каждого пункта меню ... как мне это сделать

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 Ответ

3 голосов
/ 19 мая 2010

Вы можете привести параметр "sender" (приведение к MenuItem), чтобы найти индекс в коллекции mi.MenuItems.

В качестве альтернативы, я бы настроил обработчики событий, используя анонимные функции ...

* 1005 Е.Г. *

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

Тогда у вас есть SetLetter как:

private void SetLetter(string letterToSetTo)
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...