У меня есть, ContextMenuStripкоторый назначен на несколько разных списков. Я пытаюсь понять, когда ContextMenuStripнажимается, для чего ListBoxон был использован. Для начала я попробовал приведенный ниже код, но он не работает. senderИмеет правильное значение, но когда я пытаюсь назначить его на menuSubmittedэто нуль.
private void MenuViewDetails_Click(object sender, EventArgs e)
{
ContextMenu menuSubmitted = sender as ContextMenu;
if (menuSubmitted != null)
{
Control sourceControl = menuSubmitted.SourceControl;
}
}
Любая помощь была бы замечательной. Благодарю.
Используя приведенную ниже помощь, я понял это:
private void MenuViewDetails_Click(object sender, EventArgs e)
{
ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
if (menuItem != null)
{
ContextMenuStrip calendarMenu = menuItem.Owner as ContextMenuStrip;
if (calendarMenu != null)
{
Control controlSelected = calendarMenu.SourceControl;
}
}
}
ifоператоры и не использовать их,if (menuItem == null) return;если вы похожи на меня и не хотите, чтобы ваш код, который его обрабатывает, был вложен в дополнительные ненужные 2 уровня.