Fenster immer oben auf einem anderen Fenster, das bereits oben bleibt?

8

Wie kann ich ein Fenster immer über einem anderen Fenster halten, das immer oben bleibt? Nicht, dass es über allen anderen Fenstern bleiben muss, ich brauche es nur, um über einem bestimmten Fenster zu bleiben.

    
Zach Johnson 18.02.2010, 22:39
quelle

2 Antworten

15

Dank der Antwort von SLaks und einigen Kommentaren konnte ich herausfinden, wie eine Kind-Eltern-Beziehung zwischen meinen Formen festgelegt wurde. Ich konnte Form.Show(owner) nicht verwenden, weil das Formular, das ich behalten wollte, vor dem anderen Formular angezeigt wurde. Ich habe mit Reflector den Code hinter Form.Show(owner) untersucht und festgestellt, dass sich alles hinter den Kulissen auf SetWindowLong in der Windows-API.

%Vor%

Form.Show(owner) ruft SetWindowLong mit einem nIndex von -8 auf. Die MSDN-Online-Dokumentation wird Ihnen davon nicht berichten, aber laut Winuser.h ist eine der für nIndex verfügbaren Konstanten GWL_HWNDPARENT , die den Wert -8 haben. Sobald ich diese Punkte verbunden habe, war das Problem ziemlich einfach zu lösen.

In diesem Beispiel wird das übergeordnete Element des Fensters festgelegt, auch wenn es bereits angezeigt wird:

%Vor%     
Zach Johnson 19.02.2010, 00:22
quelle
2

Tun Sie das nicht .

Das heißt, Sie sollten es schaffen, indem Sie Ihr Fenster zum Kind des anderen machen.

    
SLaks 18.02.2010 22:43
quelle

Tags und Links