【发布时间】:2020-05-15 08:57:27
【问题描述】:
我有一个表格,角落里有一个计时器,它重复数到 10。下面的“下一步”按钮触发用户每隔几秒钟读取一次。当我点击“下一步”按钮时,UI 在获取数据时冻结,其中包括计时器正在写入的文本框。因此,用户每次按下按钮时看到的可见数字都会冻结 2 秒。有没有办法让文本框每秒更新一次?
这里是滴答事件:
private void timer_Counter_Tick(object sender, EventArgs e)
{
if (Ticker == 9)
{
Ticker = 0;
}
else { Ticker++; }
txtbx_Timer.Text = Ticker.ToString();
}
这是定时器的启动:
timer_Counter = new System.Windows.Forms.Timer();
timer_Counter.Tick += new EventHandler(timer_Counter_Tick);
timer_Counter.Interval = 1000;
timer_Counter.Start();
【问题讨论】:
-
您需要向我们展示按钮的 Click 事件处理程序的代码。您可能还想搜索多线程和异步编程等关键字。问题不在于文本框没有“优先”。只是当您单击按钮时,正在执行一些阻塞整个 UI 线程的工作。有几种方法可以解决这个问题,具体取决于您想要做什么。
-
您在按钮单击事件中的代码正在 UI 线程上运行。如果不将代码放在按钮点击到另一个线程中,您将无法保持表单的反应性。
标签: c# forms user-interface timer