111,129
社区成员
发帖
与我相关
我的任务
分享
//最开始使用类似下面这种方法(第一次的work()总是会在画面上Form从defualtcolor改变为Color.FromArgb(0, 0, 0)之前先执行.结果导致第一次执行时对应Color是错误的.
//发现Thread.Sleep(100);这句没什么作用, BackColor 的改变 可能在work()开始执行了之后才发生....
for (int i = 0; i < 256; i += 16)
{
this.BackColor = Color.FromArgb(i, i, i);
Thread.Sleep(100);
work();
Thread.Sleep(1000);
}
//后来换成这种,发现效果也不佳....
for (int i = 0; i < 256; i += 16)
{
this.BackColor = Color.FromArgb(i, i, i);
}
private void Form1_BackColorChanged(object sender, EventArgs e)
{
Thread.Sleep(500);
work();
Thread.Sleep(1000);
}
//再后来我换成Form里面的Timer 将this.BackColor = Color.FromArgb(i++, i++, i++);work();写入 timer1_Tick 事件
//效果还是一样,第一次的执行总是work()先执行了结果BackColor才变成0 开始变化....
int i = -1;
void timer1_Tick(object sender, EventArgs e)
{
if( i++ < 255 )
{
this.BackColor = Color.FromArgb(i,i,i);
Application.DoEvents(); //<---
work();
}
}