Fensterposition beim Öffnen einstellen

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Nachdem ich mittlerweile mit zwei Bildschirmen arbeite (einer für die Hauptanwendungen, einer für andere Informationen wie Termine et cetera) und der Bildschirm für die Hauptanwendungen der zweite Bildschirm ist, nervt es mich etwas, dass Anwendungen beim Debuggen immer auf dem sekundären Bildschirm angezeigt werden und ich diese immer erst auf den Hauptbildschirm ziehen muss. Also schauen wir uns in diesem Artikel an, welche Möglichkeiten .NET bietet, festzulegen, auf welchem Bildschirm eine Anwendung geöffnet werden soll.

Ausgangssituation

Die aktuelle Situation ist also, dass ich zwei Bildschirme habe – der linke Bildschirm zeigt unwichtige Anwendungen an, der rechte (oder auch zentrale) Bildschirm dient zum Arbeiten. Wenn ich nun Visual Studio auf dem zentralen Bildschirm geöffnet habe und eine Anwendung zum Debuggen starte, erscheint diese immer auf dem linken, sekundären Bildschirm. Wenn ich die beim Debuggen erstellte .exe-Datei direkt aufrufe, wird diese wie gewünscht im Hauptbildschirm angezeigt. Wie kann ich nun steuern, welcher Bildschirm die Anwendung beim Debuggen anzeigt

Lösung aus der Forms-Bibliothek

Die notwendigen Elemente für den Zugriff auf die Bildschirme finden sich in der Bibliothek System.Windows.Forms, die wir zunächst über einen entsprechenden Verweis zu unserem WPF-Projekt hinzufügen. Das erledigen wir über den Dialog, der nach dem Aufruf des Menüeintrags Projekt|Verweise hinzufügen… erscheint. Hier sehen Sie im Bereich Assemblys nach einer schnellen Suche den Eintrag System.Windows.Forms, den Sie per Klick in das Kontrollkästchen zum Projekt hinzufügen (siehe Bild 1). Anschließend können wir per Code auf die Elemente dieser Bibliothek zugreifen.

Hinzufügen eines Verweises auf die Bibliothek System.Windows.Forms

Bild 1: Hinzufügen eines Verweises auf die Bibliothek System.Windows.Forms

Die Screen-Klasse

Mit der Screen-Klasse eröffnen wir uns die Möglichkeit, auf die Bildschirme des Systems zuzugreifen. Die Screen-Klasse liefert uns die folgenden interessanten Auflistungen und Eigenschaften:

  • AllScreens: Zugriff auf alle Screen-Elemente
  • BitsPerPixel: Anzahl der Bits im Arbeitsspeicher, die einem Pixel von Daten zugeordnet sind
  • Bounds: Ermittelt die Maße des Bildschirms. Dies liefert ein Objekt des Typs Rectangle, das wiederum die vier Eigenschaften Left, Top, Width und Height aufweist. Bei mehreren Bildschirmen werden die Werte bezogen auf das Gesamtsystem betrachtet. Wenn der linke Bildschirm beispielsweise eine Breite (Width) von 1920 Pixeln hat, dann ist der Wert für die Eigenschaft Left des rechten Bildschirms ebenfalls gleich 1920 Pixel.
  • DeviceName: Liefert den Namen des Bildschirms im System.
  • Primary: Gibt an, ob der Bildschirm der primäre Bildschirm ist.
  • PrimaryScreen: Liefert einen Verweis auf den primären Bildschirm.
  • WorkingArea: Ermittelt die Maße des Arbeitsbereichs des Bildschirms. Dieser unterscheidet sich von den mit Bounds ermittelten Maßen, in dem es nur den Bereich ohne Elemente wie die Taskleiste oder angedockte Fenster und Menüs ermittelt – also den tatsächlich verfügbaren Arbeitsbereich. Die Eigenschaft WorkingArea liefert ein Objekt des Typs Rectangle, das wiederum die vier Eigenschaften Left, Top, Width und Height aufweist. Auch hier gilt: Bei mehreren Bildschirmen werden die Werte bezogen auf das Gesamtsystem betrachtet. Wenn der linke Bildschirm beispielsweise eine Breite (Width) von 1920 Pixeln hat, dann ist der Wert für die Eigenschaft Left des rechten Bildschirms ebenfalls gleich 1920 Pixel.

Hier ist nun zu beachten, dass Screen selbst bereits ein Element des Typs Screen liefert, mit dem Sie einige Eigenschaften des Bildschirms wie BitsPerPixel, Bounds, DeviceName, Primary und WorkingArea auslesen können. Gleichzeitig können Sie aber über die Eigenschaft PrimaryScreen einen Verweis auf das Screen-Objekt im System ermitteln, das als primärer Bildschirm angegeben ist.

 

Schreibe einen Kommentar