标签文本在计时器滴答期间没有改变
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()
。
我编写了一个程序,从网站获取原始公告并将其放入名为“公告”的文本中。但是,即使有 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()
。