2012-04-03 6 views
0

このコードはbgカラーを1回だけ変更します。それを動作させるには何を追加する必要がありますか?スイッチング制御backColor fast

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

sleep 20はほぼ0に相当します。あなたは*ただ1つの色の変化しか見ないかもしれませんか?達成しようとしていることは、おそらくあなたがやろうとしていることをするためのよりよい方法でしょう。 –

+1

http://stackoverflow.com/q/952906/ –

+0

を参照してください。しかし、50 * 40 msのメインスレッドでのスリープ()はお勧めできません。 –

答えて

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; 
    }