none
Mausposition bezogen auf den Monitor ermitteln RRS feed

  • Frage

  • Hallo,
    wenn ich auf einen Button mit der Maus klick, dann öffnet sich rechts unten von der Klickposition eine neue Form.
    TestView.ShowDialog();
    Der Eigenschaft Location von der TestView übergebe ich die Position der Maus.

    Nun habe ich das Problem, dass der Button auch eventuell (Button in einem DataGridView, viele Datensätze) am unteren Rand des Programmfensters sich befindet.
    Wenn ich dann die TestView öffne ist nur noch ein Teil davon zu sehen.
    Andererseits kann auch das Programmfenster nicht maximiert sein (siehe Skizze).
    In beiden Fällen ist es am besten, den Abstand zwischen Mausposition (bezogen auf den Monitor) und oberen, linken, rechten und unteren Bildschirmrand zu ermitteln.
    Wie mache ich das?

    Alexander

    Montag, 19. März 2012 16:10

Antworten

  • Hallo Alexander,

    Form.Location benötigt Angaben in Bildschirmkoordinaten. Mit Control.PointToScreen() kannst Du aus einer formbezogenen in eine bildschirmbezogene Position konvertieren:

    Point mousePositionOnControl = Control.MousePosition;
    Point mousePositionOnScreen = PointToScreen(mousePositionOnControl);
    Screen currentScreen = Screen.FromPoint(mousePositionOnScreen);

    Screen.Bounds bzw. Screen.WorkingArea liefern dir dann die weiteren benötigten Informationen.

    Gruß
    Marcel

    • Als Antwort markiert AlexanderRi Dienstag, 20. März 2012 14:05
    Montag, 19. März 2012 16:40
    Moderator