Bestimmen Sie, was die Kontrolle der ContextMenuStrip verwendet wurde, auf

Ich habe eine ContextMenuStrip zugeordnet ist, mehrere verschiedene Listboxen. Ich versuche herauszufinden, wenn die ContextMenuStrip geklickt wird, was ListBox es verwendet wurde, auf. Ich habe versucht den code unten ein Anfang, aber es funktioniert nicht. Die sender hat den richtigen Wert, aber wenn ich versuche, ordnen Sie es mit den menuSubmitted es null ist.

private void MenuViewDetails_Click(object sender, EventArgs e)
{
    ContextMenu menuSubmitted = sender as ContextMenu;
    if (menuSubmitted != null)
    {
        Control sourceControl = menuSubmitted.SourceControl;
    }
}

Jede Hilfe wäre toll. Danke.

Mit der Hilfe unten 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;
                }
            }
        }
vielen Dank für die Lösung, die ich suchte. ich hatte das gleiche problem. aber ich schlage vor, nicht verschachteln all jene if Aussagen und mit if (menuItem == null) return; wenn Sie wie ich sind und nicht möchten, dass Ihr code, der verarbeitet es verschachtelt werden und eine zusätzliche unnötige 2 Ebenen.

InformationsquelleAutor Taryn | 2011-02-03

Schreibe einen Kommentar