Center-Formular auf dem Bildschirm oder auf Eltern

7

Da die eingebaute Funktionalität zum Positionieren von Formularen in VB.NET nicht immer geeignet ist zu verwenden, versuche ich, mein Sub dazu zu bringen, das zu tun.

Aber ich habe etwas verpasst ...

%Vor%

Wie bekomme ich dieses Sub-Formular richtig in der Mitte des Bildschirms oder in einer anderen Form, wenn es definiert ist?

    
Wine Too 15.10.2013, 22:18
quelle

4 Antworten

15

Der Code ist einfach falsch. Es ist auch wichtig, dass dieser Code spät genug läuft, der Konstruktor zu früh ist. Stellen Sie sicher, dass Sie es aus dem Load-Ereignis aufrufen. Zu diesem Zeitpunkt wird das Formular ordnungsgemäß automatisch skaliert und an die Benutzereinstellungen angepasst. Die StartPosition-Eigenschaft spielt dann keine Rolle mehr. Korrektur:

%Vor%

Übrigens, einer der wenigen Gründe, den Load Event-Handler tatsächlich zu implementieren.

    
Hans Passant 15.10.2013, 22:39
quelle
21

Ich weiß, das ist ein alter Beitrag, und das beantwortet nicht direkt die Frage, aber für jeden anderen, der über diesen Thread stolpert, kann das Zentrieren einer Form einfach durchgeführt werden, ohne dass Sie Ihre eigene Prozedur schreiben müssen.

Mit System.Windows.Forms.Form.CenterToScreen() und System.Windows.Forms.Form.CenterToParent() können Sie das Formular in Bezug auf den Bildschirm oder in Bezug auf das übergeordnete Formular zentrieren, je nachdem, welches Sie benötigen .

Beachten Sie, dass diese Prozeduren MUST aufgerufen werden müssen, bevor das Formular geladen wird. Es empfiehlt sich, sie im Ereignishandler form_load aufzurufen.

BEISPIEL CODE:

%Vor%     
mike100111 12.05.2015 18:46
quelle
4

Dies könnte auch nützlich sein:

%Vor%

Sie können auch FormStartPosition.CenterScreen

verwenden     
user3012629 30.09.2014 17:21
quelle
0

Ich hatte das Problem, dass StartPosition = CenterParent nicht funktionierte. Ich habe es gelöst und das Formular mit .ShowDialog() anstelle von .Show() aufgerufen:

%Vor%     
Marco Sánchez 17.09.2016 14:09
quelle

Tags und Links