2017-07-28 56 views
0

我想连续显示和隐藏标签(在for循环中使用sleep)。这是我在做什么:连续显示并隐藏Windows窗体中的标签

for (i = 0; i < 25; i++) 
{ 
     label1.Visible = true; 
     Thread.Sleep(1000); 
     label1.Visible = false; 
     Thread.Sleep(2000); 
} 

但是,上述代码不能按预期方式工作。我根本看不到标签。任何想法如何实现这一

+0

什么是使用'主题的目的。睡眠(1000)'? –

+1

使用'定时器'组件并更改每个滴答的可见性:'label1.Visible =!label1.Visible;' – ASh

回答

1

使用Thread.Sleep冻结的Windows您选择界面,你必须运行一个分开的胎面或使用定时器,该为你做 例子:

void blinkLabel() 
    { 
     int blink_times = 25; 

     System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer();    

     timer1.Interval = 1000;//every one second 

     timer1.Tick += new System.EventHandler((s, e) => 
     { 
      if (blink_times >= 0) 
      { 
       label1.Visible = !label1.Visible; 
       blink_times--; 
      } 
      else 
      { 
       timer1.Stop(); 
      } 
     } 
     ); 


     timer1.Start(); 
    } 
+0

对不起,互联网连接丢失了一段时间。谢谢。请试试看并回复 –

+0

非常感谢。有用!我学到的一点 - 从不在表单的主线程中使用Sleep –