Ich habe eine ContextMenuStrip
, die mehreren verschiedenen Listenfeldern zugeordnet ist. Ich versuche herauszufinden, wann auf das ContextMenuStrip
geklickt wird, worauf ListBox
es verwendet wurde. Ich habe den folgenden Code zunächst einmal ausprobiert, aber er funktioniert nicht. Das sender
hat den richtigen Wert, aber wenn ich versuche, es dem zuzuweisen, menuSubmitted
ist es null.
private void MenuViewDetails_Click(object sender, EventArgs e)
{
ContextMenu menuSubmitted = sender as ContextMenu;
if (menuSubmitted != null)
{
Control sourceControl = menuSubmitted.SourceControl;
}
}
Jede Hilfe wäre großartig. Vielen Dank.
Mit der folgenden Hilfe habe ich es herausgefunden:
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
Anweisungenif (menuItem == null) return;
zu verschachteln und zu verwenden, wenn Sie wie ich sind und nicht möchten, dass Ihr Code, der damit umgeht, um zusätzliche unnötige 2 Ebenen verschachtelt wird.