Laden...

Startbildschirm

Erstellt von housefreak vor 19 Jahren Letzter Beitrag vor 19 Jahren 8.900 Views
H
housefreak Themenstarter:in
238 Beiträge seit 2004
vor 19 Jahren
Startbildschirm

Hi

wie erstell ich denn so einen Startbildschirm, wie z.B. bei Word wenn es geladen wird? Hab keine Idee wie ich das anstellen könnte.

Hoffe ihr könnt mir dabei helfen.

Gruß

4.221 Beiträge seit 2005
vor 19 Jahren

Erstelle ein neues Form --> SplashScreen

auf diesem Form ein paar Properties verstellen


this.ControlBox = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.TopMost = true;

Nun Bild usw auf diesem Form platzieren

Die Start-Routine könnte so aussehen (die einfachste Variante)


/// <summary>
		/// The main entry point for the application.
		/// </summary>
		[STAThread]
		static void Main() 
		{

			SplashScreen splash=new SplashScreen();
			splash.Show();
			Application.DoEvents();
			Form2 frmMain=new Form2();
			System.Threading.Thread.Sleep(1000);
			frmMain.Show();
			System.Threading.Thread.Sleep(500);
			splash.Close();
			splash=null;
			Application.Run(frmMain);
		}

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
709 Beiträge seit 2005
vor 19 Jahren

Einfach eine Form, ohne System Menü. Daten laden und dann schließen. Wenn du Startbildschirm erstellen willst, der einfach 5 Sekunden angezeigt wird, kannst du das ja über einen Timer machen!

Da war der Programmiererhans schneller! 😁

4.221 Beiträge seit 2005
vor 19 Jahren

Original von SimonKnight6600
Da war der Programmiererhans schneller! 😄

Tja hast du eine ToLateException erhalten 8)

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

H
housefreak Themenstarter:in
238 Beiträge seit 2004
vor 19 Jahren

Danke Jungs das ging ja mal schnell!

Hat mir echt geholfen!

Gruß

M
456 Beiträge seit 2004
vor 19 Jahren

I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.

H
housefreak Themenstarter:in
238 Beiträge seit 2004
vor 19 Jahren

Warum funktioniert Form.Close() nicht?

Also ich kann den SplashScreen nicht schließen.

S
8.746 Beiträge seit 2005
vor 19 Jahren

Weil die Windows-Loop nicht aktiv ist. Die läuft erst mit Application-Run() los. Wenn dein Splash aktiv ist, hängst du aber noch im Sleep()!

Du solltest also nicht mit Sleep() arbeiten, sondern die Alternative mit dem Timer auf dem Splash-Form verwenden. In diesem Fall hast du aber den Splash-Screen UND das Hauptfenster oben. Auch nicht das was du willst.

Dazu musste du dem Application.Run() das Splash-Fenster übergeben und dann im Form_Close des Splash-Fensters das Hauptform aufrufen.

Schau dir mal die CodeProjekt-Lösung an!

H
housefreak Themenstarter:in
238 Beiträge seit 2004
vor 19 Jahren

DAs porblem ist aber dass ich die sleep funktionen gar nicht benutze und im debugger er mir das fenster schließt?

4.221 Beiträge seit 2005
vor 19 Jahren

Was hast Du gegenüber meinem Posting verändert ?

Der von mir gepostete Code ist getestet und läuft.... 🤔

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

H
housefreak Themenstarter:in
238 Beiträge seit 2004
vor 19 Jahren
            SplashScreen Screen = new SplashScreen();
            Screen.Show();
            Application.DoEvents();

            Screen.Close();
            
            MainForm Form = new MainForm();

            Screen = null;

            Application.EnableVisualStyles();
            Application.EnableRTLMirroring();
            Application.Run(Form);

Das ist mein Code.

4.221 Beiträge seit 2005
vor 19 Jahren

Den Code den Du gepostet hast läuft bei mir !

Hast Du im SplashScreen irgendwelche Controls oder Code ?

Zudem: Achte darauf, dass Du keine reservierten Worte verwendest.... Dies kann schnell zu unlesbarem Code führen.

Sowohl Form als auch Screen sind existierende Typen .... somit nicht als Variablennamen zu verwenden.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...