in vb.net gibt es einen Ereignis-listener für das klicken außerhalb einer Schaltfläche?

Erstelle ich ein benutzerdefiniertes Menü, und ich möchte das Menü zu schließen, wenn der Benutzer klickt irgendwo sonst auf der form. Ich habe versucht, mit .LostFocus, aber das funktioniert nur, wenn die Sache, die Sie klicken Sie auf können den Fokus. Viele Dinge nehmen Sie nicht den Fokus und daher bleibt das Menü geöffnet. Ich brauche einen listener auf die Schaltfläche, die sagt, "wenn die Maus geklickt wurde und es war nicht auf Sie, dann tun Sie etwas (schließen)".

Irgendwelche Vorschläge?

Dank.

  • Wie über die Forms-Click-Ereignis?
  • Wie sind Sie mit der Erstellung Ihrer benutzerdefinierten Menü? Erstellen Sie ein Formular als Menü?
  • Nein, das Menü ist nicht eine form, sondern eine Tafel. Ich habe versucht, sowohl ein Mdi als auch regelmäßige Formen, aber weder diente meine Zwecke. Beide hatten Probleme mit der Konzentration und Kontrolle. So ein panel scheint der beste Weg zu gehen für jetzt.
  • Die form.click-Ereignis wird nur ausgelöst, wenn Sie nicht klicken auf ein anderes Steuerelement.
  • Zitat: "aber das Menü ist im Grunde ein panel". Sie machen es grundlegend falsch, ein Menü sollte eine top-level-Fenster. Wenn Sie wollen, ihn zu retten, dann brauchen Sie, um verwenden Sie die Capture-Eigenschaft. Setzen Sie ihn auf true, wenn Sie die Anzeige der Systemsteuerung. Erhalten Sie alle Maus-Ereignisse, auch diejenigen, die sich außerhalb der panel.
  • Hans, Nachdem ich den Capture-Wert auf true, wie kann ich erkennen, die Maus-Ereignisse, die außerhalb des Panels?

InformationsquelleAutor John | 2013-08-28
Schreibe einen Kommentar