我有一个标签。我需要每3秒更改一次text属性。请让我知道如何做到这一点。我尝试使用计时器,但我的应用程序进入无限循环。我不希望这种情况发生/任何帮助将不胜感激!
timer1.Interval = 5000;
timer1.Enabled = true;
timer1.Tick += new System.EventHandler (OnTimerEvent);
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
refreshStatusBar();
}
答案 0 :(得分:0)
在类构造函数中,您需要初始化Label
和.NET Framework的Timer
组件的初始文本。
timer.Tick += new EventHandler(timer_Tick);
timer.Interval = (1000) * (3); // Timer will tick every 3 seconds
timer.Enabled = true;
timer.Start();
label.Text = DateTime.Now.ToString(); // initial label text.
然后在计时器的刻度线处理程序中,更新Label
的文本属性。
private void timer_Tick(object sender, ElapsedEventArgs e)
{
label.Text = DateTime.Now.ToString(); // update text ...
}
答案 1 :(得分:-1)
您应该使用线程,当您想要停止呼叫时,请使用yourthread.Abort();
更新: SynchronizationContext方法:
System.Threading.SynchronizationContext sync;
private void Form1_Load(object sender, System.EventArgs e)
{
sync = SynchronizationContext.Current;
System.Windows.Forms.Timer tm = new System.Windows.Forms.Timer { Interval = 1000 };
tm.Tick += tm_Tick;
tm.Start();
}
//Handles tm.Tick
private void tm_Tick(object sender, System.EventArgs e)
{
sync.Post(dopost, DateAndTime.Now.ToString());
}
public void dopost(string txt)
{
Label1.Text = txt;
}