切换控制backcolor快速
问题描述:
此代码只改变bg颜色一次。我需要添加什么才能使其工作?切换控制backcolor快速
int i=0;
while (i<50)
{
button1.BackColor = Color.White;
Thread.Sleep(20);
button1.BackColor = Color.Black;
Thread.Sleep(20);
i++;
}
答
即使更改睡眠参数更大的东西,如果你是哪里的形式运行在同一个线程(主线程)上运行,你不会看到,因为你阻挡主线程的任何变化;相反,你应该使用另一个线程或者只使用Windows窗体的Timer组件。
int i;
public Form1()
{
InitializeComponent();
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
timer.Interval = 200;
timer.Tick += new EventHandler(timer_Tick);
this.BackColor = Color.White;
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
if (this.BackColor == Color.White)
this.BackColor = Color.Black;
else
this.BackColor = Color.White;
}
睡眠20几乎等于0.也许你只*看*一个颜色变化?你想完成什么,可能有更好的方法来做你想做的事情。 – 2012-04-03 15:51:33
请参阅http://stackoverflow.com/q/952906/ – 2012-04-03 15:52:25
但睡眠()在主线程50 * 40毫秒是不是一个好主意。 – 2012-04-03 15:53:17