Управление с ContextMenuStrip

Я использую VS2012, C#, Winforms.

Мое приложение генерирует около 100 элементов управления метками во время выполнения. Я хочу, чтобы пользователь щелкнул правой кнопкой мыши элемент управления меткой, вызвал полосу контекстного меню. У меня эта часть работает. Но у меня возникают проблемы с определением, на каком элементе управления нажимается, когда я пытаюсь ответить на событие щелчка по пункту контекстного меню. Как передать элемент управления событию щелчка по пункту меню?

Я использую этот код для определения исходного кода, но он всегда вызывает пустое исключение:

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
 {
     Control sourceControl = new Control();
     sourceControl = contextMenuStrip1.SourceControl;

     MessageBox.Show(sourceControl.Text);
 }

sourceControl всегда получает значение null из contextMenuStrip1.SourceControl;

1 ответ

SourceControl свойство может иметь значение null, так как это свойство лучше всего использовать во время события открытия. Есть несколько доступных обходных путей. Проверьте эти два на Stackru:

Свойство ContextMenuStrip.Owner пустое, когда извлекается из вложенного ToolStripMenuItem

Получить SourceControl моего ContextMenuStrip, когда я использую сочетание клавиш

Другие вопросы по тегам