Mam ContextMenuStripprzypisany do kilku różnych list. Próbuję dowiedzieć się, kiedy ContextMenuStripkliknięto, na czym ListBoxbył używany. Na początek wypróbowałem poniższy kod, ale nie działa. senderMa prawidłową wartość, ale gdy próbuję go przypisać do menuSubmittedto jest null.
private void MenuViewDetails_Click(object sender, EventArgs e)
{
ContextMenu menuSubmitted = sender as ContextMenu;
if (menuSubmitted != null)
{
Control sourceControl = menuSubmitted.SourceControl;
}
}
Każda pomoc byłaby świetna. Dzięki.
Korzystając z poniższej pomocy, rozgryzłem to:
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;
}
}
}
ifinstrukcji i używać,if (menuItem == null) return;jeśli jesteś podobny do mnie i nie chcesz, aby twój kod, który go obsługuje, był zagnieżdżony na dodatkowych niepotrzebnych 2 poziomach.