Динамически добавлять элементы в контекстное меню и устанавливать действие «Нажмите» - PullRequest
11 голосов
/ 22 октября 2008

У меня есть список строк, который обновляется каждые 5 секунд. Я хочу создать контекстное меню и настроить его элементы динамически, используя этот список. Проблема в том, что я даже не представляю, как это сделать и управлять действием Click для каждого сгенерированного элемента (который должен использовать один и тот же метод с другим параметром DoSomething ("item_name")).

Как мне это сделать?

Спасибо за ваше время. С наилучшими пожеланиями.

Ответы [ 2 ]

21 голосов
/ 22 октября 2008

Итак, вы можете очистить элементы из контекстного меню с помощью:

myContextMenuStrip.Items.Clear();

Вы можете добавить товар по телефону:

myContextMenuStrip.Items.Add(myString);

В контекстном меню есть событие ItemClicked. Ваш обработчик может выглядеть так:

private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    DoSomething(e.ClickedItem.Text);
}

Кажется, у меня все в порядке. Дайте мне знать, если я неправильно понял ваш вопрос.

0 голосов
/ 25 января 2017

Другая альтернатива, использующая объект ToolStripMenuItem:

//////////// Create a new "ToolStripMenuItem" object:
ToolStripMenuItem newMenuItem= new ToolStripMenuItem();

//////////// Set a name, for identification purposes:
newMenuItem.Name = "nameOfMenuItem";

//////////// Sets the text that will appear in the new context menu option:
newMenuItem.Text = "This is another option!";

//////////// Add this new item to your context menu:
myContextMenuStrip.Items.Add(newMenuItem);


Внутри события ItemClicked вашего myContextMenuStrip вы можете проверить, какой вариант был выбран ( на основе свойства name пункта меню )

private void myContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    ToolStripItem item = e.ClickedItem;

    //////////// This will show "nameOfMenuItem":
    MessageBox.Show(item.Name, "And the clicked option is...");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...