So legen Sie die Fensterposition auf einem anderen Monitor als im Hauptfenster festC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 So legen Sie die Fensterposition auf einem anderen Monitor als im Hauptfenster fest

Post by Anonymous »

Es ist kein Problem, die Position des neuen WinForm innerhalb des Monitors festzulegen, auf dem das Hauptfenster angezeigt wird. Zum Beispiel:

Code: Select all

Form1 form = new Form1();
form.Show();
form.StartPosition = FormStartPosition.Manual;
form.Location = new System.Drawing.Point(100,100);
Aber form.Location = new System.Drawing.Point(-500,100); funktioniert nicht. Dieser Arbeitsbereich existiert, aber das Formular wird immer wieder im Hauptfenster angezeigt. So steuern Sie die Formularposition unter .NET korrekt.
Für mich sieht es so aus, als ob die Show()-Methode asynchron ist und immer die neue Position meines Fensters neu schreibt, wenn sich dieses Fenster außerhalb des „Hauptmonitors“ befindet.
Bearbeiten:
Ich habe drei Monitore. Der Hauptmonitor befindet sich in der Mitte. Das Hauptfenster meiner Anwendung befindet sich auf dem mittleren Monitor. Der mittlere und rechte Monitor haben die gleiche Auflösung und Skalierung. Beide haben eine Auflösung von 2560 x 1440 und sind horizontal angepasst.
.NET Framework 4.8
Form1 ist das Standardformular und hat keinen zusätzlichen Code.

Code: Select all

There is SystemInformation.VirtualScreen info:
Left top (X, Y): (-1920, 0)
width: 7040 px
height: 1440 px
Rigth button (Right, Bottom): (5120, 1440)
Form1 hat 100x100.
Mein Code für die Position von Form1

Code: Select all

Form1 form = new Form1();
form.StartPosition = FormStartPosition.Manual;
form.Show();
form.Location = new System.Drawing.Point(2500, 500);
Ich ändere den Wert 2500 (linke Position) im neuen System.Drawing.Point(). Wenn sich form1 auf dem Hauptmonitor befindet, funktioniert alles wie erwartet. Alles funktioniert einwandfrei, solange sich form1 größtenteils auf dem primären Monitor befindet (auch wenn ein Teil von form1 auf dem sekundären Monitor sichtbar ist). Sobald es jedoch vollständig auf den rechten Monitor gelangt, sehe ich (nach dem „Show“-Ereignis), dass das Fenster nur kurz an der richtigen Stelle blinkt und dann in der Mitte des Primär-/Hauptbildschirms erscheint.
Aber die ShowDialog()-Methode funktioniert gut über den gesamten Bereich des virtuellen Bereichs.
Wie platziere ich ein Fenster an einer beliebigen Stelle mit der Show()-Methode?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post