2012-04-03 101 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; 
    }