Вот простое решение.
Предположим, у вас есть элемент управления ListBox в вашей форме, с которым связано ContextMenu. Теперь мы хотим добавлять элемент списка в элемент управления каждый раз, когда на него щелкают:
private void listBox1_MouseClick(object sender, MouseEventArgs e)
{
listBox1.Items.Add("new item added - " + DateTime.Now.ToLongTimeString());
}
Теперь определите переменную bool на уровне формы под названием menuClosed примерно так:
private bool menuClosed = false;
Теперь перехватите событие контекстного меню Закрыто , например, так и установите флаг:
private void contextMenuStrip1_Closed(object sender, ToolStripDropDownClosedEventArgs e)
{
menuClosed = true;
}
Теперь обновите код, который добавляет элемент в элемент управления списка, как показано ниже:
private void listBox1_MouseClick(object sender, MouseEventArgs e)
{
if (!menuClosed)
listBox1.Items.Add("new item added - " + DateTime.Now.ToLongTimeString());
}
Я просто устанавливаю переменную bool в значение true, когда контекстное меню закрывается, затем я проверяю флаг bool, чтобы увидеть, следует ли добавлять элемент в список. Вы можете использовать этот же механизм для определения того, должна ли выполняться конкретная команда.