[英]c# perform commands immediately
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,依此類推。
您需要在每次更改后添加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);
}
}
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.