2012-04-14 5 views
0

ich ein Fenster Form haben, die ich für mein Begrüßungsbildschirm erstellt, habe ich ein Mal in dieser Form, aktiviert es und hinzugefügt, um die folgenden Zeilen in meinem Code:Wie kann man einen Startbildschirm einige Sekunden warten lassen, bevor er ausgeblendet wird?

 private void timer1_Tick(object sender, EventArgs e) 
    { 
     this.Opacity -= 0.01; 

     if (this.Opacity <= 0) 
     { 
      this.Close(); 
     } 
    } 

Der Begrüßungsbildschirm ausgeblendet, aber das Problem ist, dass ich will, dass es für 5 Sekunden 100% sichtbar ist (Opazität = 1,0), dann beginnt es auszublenden, bis es schließt!

 Using System.Threading; 

ich die timer1 deaktiviert, dann habe ich die folgende Zeile auf dem Formularladeereignis

 Thread.Sleep(5000); 
     timer1.Enabled = true; 

Aber un glücklicherweise hinzugefügt:

ich diese Linie am Anfang meines Code hinzuzufügen versucht das funktioniert bei mir nicht, das lässt die Anwendung 5 Sekunden warten, bevor sie den Splash-Screen zeigt, dann zeigt sie es an und verblasst es sofort.

Wie kann ich den Begrüßungsbildschirm für 5 Sekunden erscheinen lassen, dann ausgeblendet?

Anyhelp geschätzt würde

+1

Die meisten nervigen Splashscreen jemals – James

+0

Ich bin mit James auf diesem. Berücksichtigen Sie die Benutzer Ihrer Anwendung - Splash-Screens sollten Ihnen etwas bieten, auf das Sie beim Initialisieren Ihrer Anwendung schauen können. Wenn Sie nichts zu initialisieren haben, lassen Sie Ihre Benutzer warten, nachdem der anfängliche Reiz des coolen Splash-Bildschirms alt geworden ist. – dtown123

Antwort

0

Eine Möglichkeit andere variable Steuerung der Opazität in dieser Zeitspanne von fünf Sekunden, so etwas wie myOpacity zu initialisiert hinzuzufügen ist (Ihr Timer unter der Annahme ist eine Hundertstelsekunde) 6:

private void timer1_Tick(object sender, EventArgs e) 
{ 
    this.myOpacity -= 0.01; 
    if (this.myOpacity <= 0) 
     this.Close(); 
    else 
     if (this.myOpacity <= 1) 
      this.Opacity -= this.myOpacity; 
} 

So in den ersten fünf Sekunden (wo myOpacity von 6 bis 1 läuft), nichts wird sich ändern. Dann wird es in dieser letzten Sekunde ausgeblendet.

1

gesetzt Zunächst Ihr Timers Intervall 5000.

private void timer1_Tick(object sender, EventArgs e) 
{ 
    timer1.Enabled = false; 
    timer1.Tick -= timer1_Tick; 
    timer1.Tick += FadeOut; 
    timer1.Interval = /* whatever your original interval was */ 
    timer1.Enabled = true; 
} 

private void FadeOut(object sender, EventArgs e) 
{ 
    this.Opacity -= 0.01; 

    if (this.Opacity <= 0) 
    { 
     this.Close(); 
    }  
} 

Dadurch wird der Timer zum ersten Verzögerung 5 Sekunden führen, dann den Timer wieder verwenden die Opazität Änderung auszuführen.

Wenn der Thread.Sleep() - Aufruf Ihre Anwendung blockierte, bedeutet dies, dass Sie den Begrüßungsbildschirm nicht in einem separaten UI-Thread ausführen. In der Regel soll Ihr Begrüßungsbildschirm bei der Initialisierung Ihrer Anwendung parallel angezeigt werden.

Verwandte Themen