Frage

Ich habe eine Anforderung, die Context zu verstecken, wenn eine bestimmte Marke nicht gesetzt ist. Wie ich uns ausdrücklich nicht denken, das Ein- / Ausblenden des Kontextmenüleiste steuern können, habe ich beschlossen, über die Kontrolle die rechte Maustaste klicken zu stoppen, mit dem die Context zugeordnet ist. Es ist ein Usercontrol, so habe ich versucht Handling es Mouseclick-Ereignis innerhalb der ich überprüfen, ob das Flag gesetzt ist, und wenn die Taste eine rechte Taste ist. Doch zu meinem Erstaunen, wird das Ereignis nicht auf Mouse Right gefeuert Klick, aber Feuer nur für Linksklick.

Gibt es irgend etwas falsch mit mir oder gibt es eine Abhilfe?

Rechtsklick erhält GEFUNDEN, Frage Titel und Beschreibung geändert

Nach etwas mehr Forschung tun, ich erhielt den Rechtsklick zu schießen, wenn ich die Maus Runter Ereignis auf der Control bearbeiteter. Allerdings ist immer noch ahnungslos, als wie explizit die Context verhindert das Laden von . Eine andere Frage Wesen, warum nicht Mouse nachwies Rechts-Taste Klicken Sie?


aktuelle Problemumgehung

Registrieren der Ereignishandler

   userControl1.Control1.MouseDown += new MouseEventHandler(Control1_MouseDown);

 void Control1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right && flag == false)
        {
           userControl1.Control1.ContextMenuStrip = null;
        }
        else
        {
            userControl1.Control1.ContextMenuStrip = contextMenuStrip1;
        }

    }

Dies ist die aktuelle Problemumgehung ich tue. Aber wie kann ich es in der Eröffnung des Context ändern

War es hilfreich?

Lösung

Ihre Lösung wird auf jeden Fall fehlschlagen, wenn das Kontextmenü mit der Kontextmenü-Taste aufgerufen wird (oder was es heißt) auf der Tastatur. Sie können das Opening Ereignis verwenden, um die Eröffnung eines Kontextmenüs zu löschen.

Andere Tipps

Es ist eine Arbeit um.

Lassen Sie uns sagen Menüpunkt A das Flag setzt, das das Kontextmenü über die Kontrolle B steuert.

In dem Click-Ereignis für A, setzen Sie b.ContextMenu = nichts, es auszuschalten, und legen Sie b.ContextMenu zurück in das Kontextmenü Steuerelement, um es wieder einzuschalten.

In WinForms gibt es auch das Click Ereignis -., Die für einen rechten Mausklick gefeuert bekommen

Wenn Sie WPF verwenden Sie sollten MouseRightButtonDown und MouseRightButtonUp Ereignisse haben.

Überprüfen Sie die Tabelle aus auf dieser MSDN , die auflistet, welche erhöhen steuert die Click-Ereignisse. Signifikant, Knopf, CheckBox- RichTextBox und RadioButton- (und einige andere) nicht erhöhen und Ereignis auf der rechten Maustaste.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top