2012-04-03 3 views
0

Dieser Code ändert bg Farbe nur einmal. Was muss ich hinzufügen, damit es funktioniert?Schaltsteuerung zurückFarbe schnell

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

sleep 20 ist fast gleichbedeutend mit 0. vielleicht nur * sehen * eine Farbänderung? Was versuchst du zu erreichen, es gibt wahrscheinlich einen besseren Weg, um das zu tun, was du versuchst. –

+1

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

+0

Aber Sleep() auf dem Hauptthread für 50 * 40 ms ist keine gute Idee. –

Antwort

2

Auch wenn Sie den Schlaf Argument etwas ändern größer, wenn Sie auf dem gleichen Thread arbeiten, wo Form (Haupt-Thread) in Betrieb ist, werden Sie keine Änderung sehen, weil Sie den Haupt-Thread blockieren; Stattdessen sollten Sie entweder einen anderen Thread verwenden oder einfach die Timer-Komponente von Windows Forms verwenden.

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