Управление с 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, когда я использую сочетание клавиш