标签文本在计时器滴答期间没有改变

Label text not changing during timer tick

我编写了一个程序,从网站获取原始公告并将其放入名为“公告”的文本中。但是,即使有 0 个错误,文本也根本没有改变。

namespace hidden
{
    public partial class dashboard : Form
    {
        public dashboard()
        {
            InitializeComponent();
        }

        private Timer timer1;

        public void InitTimer()
        {
            timer1 = new Timer();
            timer1.Tick += new EventHandler(timer1_Tick);
            timer1.Interval = 10000;
            timer1.Start();
        }

        string url = "hidden";
        WebClient webclient = new WebClient();

        private void timer1_Tick(object sender, EventArgs e)
        {
            announcement.Text = webclient.DownloadString(url);
        }
    }
}

正如吉米所说,你需要实际调用InitTimer方法。您可以将它添加到表单的构造函数中:

    public dashboard()
    {
        InitializeComponent();
        InitTimer();
    }

在构造函数中调用它可以正常工作,但它会减慢构造函数的运行速度,并且即使表单不可见,计时器也会计时,而且没有人能看到它在做什么。

我认为更好的方法是将其添加到 dashboard_load 事件处理程序。一旦表单可见,它将开始更新。

根据您应用的生命周期,您可能希望以某种方式停止计时器。如果愿意,您可以在 dashboard_closing 处理程序中调用 Timer.Stop()