2012-04-14 84 views
0

我有我爲我的啓動畫面創建一個Windows窗體,我添加了一個計時器,以這種形式,使得它並添加下面的線在我的代碼:如何在啓動淡出之前等待幾秒鐘啓動畫面?

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

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

啓動畫面淡出,但問題是我希望它是100%可見(不透明度= 1.0)5次,然後它開始淡出,直到它關閉!

我想在我的代碼開始加入這一行:

 Using System.Threading; 

我禁用了定時器1,然後我說線下的形式加載事件

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

但未幸運這對我不起作用,這使得應用程序在顯示啓動畫面之前等待5次,然後顯示它並立即淡入淡出。

如何讓啓動畫面出現5秒鐘然後淡出?

Anyhelp會讚賞

+1

最煩人的飛濺屏幕 – James 2012-04-14 00:25:37

+0

我與詹姆斯在這一個。考慮你的應用程序的用戶 - 當應用程序初始化時,啓動屏幕應該給你一些東西來看看。如果你沒有什麼可以初始化的東西,你只是讓你的用戶在Cool splash屏幕的初始吸引力變老之後等待。 – dtown123 2012-04-14 00:28:58

回答

0

的方法之一是增加另一個變量控制在五秒鐘內,不透明度,像myOpacity初始化爲(假設你的計時器是百分之一秒)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; 
} 

這樣在前五秒(其中myOpacity從6運行到1),沒有什麼會改變。然後,在那最後一秒,它會淡出。

1

最初設定定時器的時間間隔爲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(); 
    }  
} 

這將導致定時器第一延遲5秒,然後再用執行不透明性變化計時器。

如果Thread.Sleep()調用阻塞了您的應用程序,則表明您沒有在單獨的UI線程上運行初始屏幕。通常,您希望在應用程序初始化時並行顯示啓動畫面。

相關問題