2012-04-03 144 views
0

此代碼只改變bg顏色一次。我需要添加什麼才能使其工作?切換控制backcolor快速

int i=0; 
     while (i<50) 
     { 
      button1.BackColor = Color.White; 
      Thread.Sleep(20); 
      button1.BackColor = Color.Black; 
      Thread.Sleep(20); 
      i++; 
     } 
+0

睡眠20幾乎等於0.也許你只*看*一個顏色變化?你想完成什麼,可能有更好的方法來做你想做的事情。 – 2012-04-03 15:51:33

+1

請參閱http://stackoverflow.com/q/952906/ – 2012-04-03 15:52:25

+0

但睡眠()在主線程50 * 40毫秒是不是一個好主意。 – 2012-04-03 15:53:17

回答

2

即使更改睡眠參數更大的東西,如果你是哪裏的形式運行在同一個線程(主線程)上運行,你不會看到,因爲你阻擋主線程的任何變化;相反,你應該使用另一個線程或者只使用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; 
    }