2012-04-14 81 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线程上运行初始屏幕。通常,您希望在应用程序初始化时并行显示启动画面。

相关问题