簡體   English   中英

C#立即執行命令

[英]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才會被更新。

請參閱Application.DoEvents

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM