3 Stimmen

Wie kann ich ein Fenster über alle anderen Fenster in meiner Anwendung legen?

Ich möchte in meiner C# Windows Forms-Anwendung ein Statusfenster anzeigen, das den Benutzer informiert, wenn die Anwendung darauf wartet, eine Sperre zu erhalten. Dies ist eine anwendungsdefinierte Sache, jedoch sollte das Fenster sichtbar sein und immer über alle anderen Fenster meiner Anwendung bleiben, auch wenn der Benutzer auf ein anderes Fenster (wie zum Beispiel das größere Hauptfenster dahinter) klickt.

Es darf nicht modal sein (so dass ShowDialog() nicht verwendet werden kann), da die Anwendung im Hintergrund weiter versuchen muss, das Fenster automatisch zu schließen, wenn die Sperre schließlich erlangt werden konnte, und es sollte wirklich nicht für die gesamte Fensterstation (d.h. alle Anwendungen, die in dieser Terminalsitzung laufen) ganz oben sein.

Ich kenne die Eigenschaft Form.TopMost, aber sie kann nur ein einziges Fenster über alle anderen bringen und halten, auch die von anderen Anwendungen. Das ist eindeutig nicht das, wonach ich suche.

Ich weiß, dass dies möglich ist, ich habe es schon oft in anderen Anwendungen gesehen. Ich weiß nur nicht, wie es gemacht werden kann.

9voto

Fredrik Mörk Punkte 151006

Wenn Sie Ihr Hauptformular in die Show Methode des Statusformulars, bleibt es über dem Hauptformular, aber nicht über anderen Anwendungen. Im Hauptformular können Sie also Code wie den folgenden haben:

StatusForm statusForm = new StatusForm();
statusForm.Show(this);

Dadurch wird jedoch nur ein einziges Fenster Ihrer Anwendung als Eigentümer angezeigt.

4voto

Timbo Punkte 26346

Sie müssen die Owner Eigenschaft des untergeordneten Formulars auf das übergeordnete Formular übertragen, und verwenden Sie Show um das untergeordnete Formular anzuzeigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X