Mam ContextMenuStrip
przypisany do kilku różnych list. Próbuję dowiedzieć się, kiedy ContextMenuStrip
kliknięto, na czym ListBox
był używany. Na początek wypróbowałem poniższy kod, ale nie działa. sender
Ma prawidłową wartość, ale gdy próbuję go przypisać do menuSubmitted
to 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;
}
}
}
if
instrukcji 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.