Frage

Ich habe eine Anwendung Weicht offen eine modale Form mit der Showdialog-Methode. Sobald dieses Formular angezeigt wird, ich möchte die Mausbewegung erfassen, auch wenn der Cursor außerhalb der Form ist. Wie kann ich die Mausbewegung erfassen? Ich sah etwas mit der Capture-Eigenschaft, aber ich kann es nicht schaffen, damit es funktioniert.

[Bearbeiten]

Ich möchte, wenn die Maus bewegt außerhalb der Form informiert werden.

War es hilfreich?

Lösung

Die Capture Eigenschaft ist der richtige Weg, aber es gibt einige Einschränkungen.

  • Nur das Vordergrundfenster kann mit der Maus erfassen
  • Maus Capturing kann durch andere Teile des Systems deaktiviert werden
  • Die Win32-API-Funktion SetCapture wird zurückgesetzt, jedes Mal eine „Maus nach oben“ Ereignis occours. Ich gehe davon aus, dass gilt auch für .NET.

Sehen Sie die Bemerkungen Abschnitt rel="nofollow von Capture Eigenschaft.

Wenn die Maus gefangen ist, werden Sie die üblichen Ereignisse empfangen, aber mit einem breiteren Maus Koordinatenbereich (zum Beispiel eine negative X-Position, wenn die Maus von der Erfassung Kontrolle belassen wird)

Maus Capturing ist zerbrechlich, weil es global Natur. Überprüfen Sie, ob es andere Möglichkeiten gibt bestimmte Ereignisse zu behandeln. Vielleicht sind die MouseLeave oder MouseEnter Ereignisse genug in Ihrem Fall.

Andere Tipps

Sie können nur die statische Eigenschaft verwenden Control.MousePosition .

Sie haben die Position des Cursors lesen können, die Cursor.Position Eigenschaft finden Sie unter Cursor.Position

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