Контекстное меню программирования - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть ContextMenuStrip, который я создаю в коде:

ContextMenuStrip menu;
public Loader()
{
    menu = new ContextMenuStrip();
    menu.Items.Add("Set Complete");
    menu.Items.Add("Set Review");
    menu.Items.Add("Set Missing");
}

Мне нужно добавить код, который будет запускаться при нажатии определенного элемента.Пока я пробовал это:

if (menu.Items[0].Selected)
{
    //code
}

if (menu.Items[1].Selected)
{
    //code
}

if (menu.Items[2].Selected)
{
   //code
}

Но (сюрприз, сюрприз) Это не работает.

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

Ответы [ 2 ]

2 голосов
/ 15 декабря 2011

Вы должны подписаться на события клика. Я изменил ваш образец, чтобы он работал:

public Loader()
{
    var menu = new ContextMenuStrip();
    var menuItem = menu.Items.Add("Set Complete");
    menuItem.Click += OnMenuItemSetCompleteClick;
    menuItem = menu.Items.Add("Set Review");
    menuItem.Click += OnMenuItemSetReviewClick;
    menuItem = menu.Items.Add("Set Missing");
    menuItem.Click += OnMenuItemSetMissingClick;
}

private void OnMenuItemSetCompleteClick(object sender, EventArgs e)
{
    // Do something
}

private void OnMenuItemSetReviewClick(object sender, EventArgs e)
{
    // Do something
}

private void OnMenuItemSetMissingClick(object sender, EventArgs e)
{
    // Do something
}
2 голосов
/ 15 декабря 2011

Вы должны добавить обработчики событий для отдельных элементов меню (событие Click) или для самого ContextMenuStrip (событие ItemClicked).

Посмотрите здесь: Как ответить на элемент ContextMenuStrip, нажмите

...