我有一个我为启动画面创建的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;
我禁用了timer1,然后我在表单加载事件
上添加了以下行 Thread.Sleep(5000);
timer1.Enabled = true;
但幸运的是,这对我不起作用,这使得应用程序在显示启动画面之前等待5次,然后显示它并立即淡化它。
如何让启动画面显示5秒然后淡出?
Anyhelp表示赞赏
答案 0 :(得分: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线程上运行启动画面。通常,您希望在应用程序初始化时并行显示启动画面。
答案 1 :(得分:0)
一种方法是在五秒钟内添加控制不透明度的另一个变量,例如myOpacity
初始化为(假设您的计时器是百分之一秒){{1} }:
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;
}
从6下降到1),没有任何改变。然后,在最后一秒,它将淡出。