public void test()
{
for(int i=1; int i<5; i++)
{
if(i==1)
button1.BackColor=Color.White;
if(i==2)
button2.BackColor=Color.White;
if(i==3)
button3.BackColor=Color.White;
if(i==4)
button4.BackColor=Color.White;
Thread.Sleep(100);
}
}
现在,程序等待400毫秒,然后所有4个按钮同时改变颜色。我希望它每次等待100毫秒并且每100毫秒更改一个按钮的颜色,这样我就可以看到第一个按钮1更改的清晰序列,然后按钮2等等。
答案 0 :(得分:2)
每次更改后都需要添加Application.DoEvents()
。您的函数占用了线程,因此在退出之前不会更新UI。
public void test()
{
for(int i=1; int i<5; i++)
{
if(i==1)
button1.BackColor=Color.White;
if(i==2)
button2.BackColor=Color.White;
if(i==3)
button3.BackColor=Color.White;
if(i==4)
button4.BackColor=Color.White;
Application.DoEvents();
Thread.Sleep(100);
}
}
答案 1 :(得分:1)
Thread.Sleep(100)
阻止UI线程绘制,但您可以使用Refresh
方法强制按钮刷新并在每次迭代时更改颜色:
public void test()
{
Button[] buttons = new Button[] { button1, button2, button3, button4, };
for (int i = 0; i < buttons.Length; i++)
{
buttons[i].BackColor = Color.White;
buttons[i].Refresh();
Thread.Sleep(100);
}
}