Frage

Also ich habe zwei Formen, Hauptform und Extraform.
Extraform gesetzt wird immer rechts von Mainform bewegt wird, wenn Mainform initialisiert
Manchmal nimmt Main beide Monitore und Extraform wird den Bildschirm geschoben nie wieder gesehen werden. Ich möchte dies verhindern, wenn möglich. Wie kann ich das tun? Es müssen zwei Monitore unterstützt, die zwischen ihnen (auf der linken Seite des Bildschirms d.h. Bildschirm 1 20px 2) kann oder kann nicht erreichbar.

Wie kann ich das tun?

War es hilfreich?

Lösung

Sie können die Screen-Klasse verwenden, um herauszufinden, wo Ihre Fenster auf dem Desktop ist relativ. Die Screen-Klasse hat eine FromRectangle Methode, so können Sie herausfinden, welcher Bildschirm sollten Sie Ihre Form der Positionierung auf (durch Ihre Form der Bounds-Eigenschaft im Vorbeigehen).

Jedes Screen-Objekt verfügt über eine Bounds-Eigenschaft, die Sie verwenden können, um die Lage und Größe des Fensters zu vergleichen, und stellen Sie sie entsprechend.

Andere Tipps

Es hängt davon ab, was Sie passieren soll, wenn Extraform über die Grenzen des Bildschirms gedrückt wird (s).

Allerdings, um herauszufinden, ob es abgestoßen hat ist, es ist ganz einfach die System.Windows.Forms.Screens Klasse. Dann können Sie tun Überprüfung Grenzen wie folgt:

        foreach (var screen in Screen.AllScreens)
        {
            if(screen.Bounds.Contains(this.Bounds))
            {
                Console.WriteLine("Device "+screen.DeviceName+" contains form!");
            }
        }

-Code wird davon ausgegangen in einer Form zu sein. Beachten Sie, dass dieser Code nur druckt, dass ein Bildschirm das Formular enthält, wenn das Formular vollständig auf dem Bildschirm enthalten ist. Dies sollte aber recht einfach zu beheben sein, je nach Bedarf.

Vielleicht ist die DesktopLocation Eigenschaft in Ihre Formulare können Sie einen Anhaltspunkt geben, was mit passiert, was mit ihnen geschieht

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