C # winforms Start (Splash) Formular nicht versteckt

8

Ich habe eine Winforms-Anwendung, in der ich 2 Formulare verwende, um alle notwendigen Steuerelemente anzuzeigen. Das erste Formular ist ein Begrüßungsbildschirm, in dem es dem Benutzer sagt, dass es geladen wird. Also verwende ich den folgenden Code:

%Vor%

Sobald die Anwendung fertig geladen ist, möchte ich, dass das SplashForm sich versteckt oder an die Rückseite gesendet wird und die Hauptansicht angezeigt wird. Ich verwende derzeit Folgendes:

%Vor%

Was ich sehe ist, dass das MainForm angezeigt wird, aber das SplashForm immer noch 'oben' sichtbar ist. Was ich gerade mache ist, auf das MainForm zu klicken, um es manuell nach vorne zu bringen. Irgendwelche Ideen, warum das passiert?

    
TK. 04.02.2009, 10:12
quelle

4 Antworten

20

Wahrscheinlich möchten Sie nur das Begrüßungsformular schließen und nicht zurücksenden.

Ich führe das Splash-Formular in einem separaten Thread aus (dies ist die Klasse SplashForm):

%Vor%

und die Hauptprogrammfunktion sieht so aus:

%Vor%     
Grzenio 04.02.2009, 10:19
quelle
4

Dies ist wichtig, um zu verhindern, dass Ihr Begrüßungsbildschirm Ihren Fokus stehlen und Ihr Hauptformular nach dem Schließen in den Hintergrund schieben kann:

%Vor%

Fügen Sie dies Ihrer Klasse für Splash-Formulare hinzu.

    
Luke 05.11.2009 19:10
quelle
2

Wenn ich es richtig verstanden habe, sollten Sie einfach Application.Run auf Ihrem Hauptformular verwenden. Zeigen Sie also entweder zuerst Ihren Splash, indem Sie etwas wie:

verwenden %Vor%

Und dann schließen Sie es manuell in MySplash, wann immer Sie wollen.

Oder zeigen Sie es in Ihren Hauptformularen Laden Sie den Ereignishandler und warten Sie dann, bis er geschlossen wird oder was auch immer, bis Sie die Load-Methode abgeschlossen haben. (Möglicherweise setzen Sie Visible auf false, bevor Sie es anzeigen und danach wieder auf true.

    
Svish 04.02.2009 10:24
quelle
1

Ich glaube, dass es ein Designfehler in meinem aktuellen Design sein könnte!

Ich denke, der beste Weg, um das zu erreichen, was ich brauche, ist, dass alles vom MainForm gesteuert wird. So kann ich verwenden:

%Vor%

Dies ist dann verantwortlich für das Anzeigen / Aktualisieren / Verstecken des SplashScreen. Auf diese Weise kann ich die notwendigen komplexen Beziehungen mit dem Rest des von der MainForm verwalteten Systems haben.

    
TK. 04.02.2009 11:20
quelle

Tags und Links