定期更改标签文本属性

时间:2012-02-17 12:27:02

标签: c#

我有一个标签。我需要每3秒更改一次text属性。请让我知道如何做到这一点。我尝试使用计时器,但我的应用程序进入无限循环。我不希望这种情况发生/任何帮助将不胜感激!

timer1.Interval = 5000; 
timer1.Enabled = true; 
timer1.Tick += new System.EventHandler (OnTimerEvent);

private void OnTimedEvent(object source, ElapsedEventArgs e) 
{ 
    refreshStatusBar();
}

2 个答案:

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