【发布时间】:2021-05-28 11:10:35
【问题描述】:
该应用程序是一个机器控件,因此它需要访问 ui 以显示状态等。(我知道,这违背了将 UI 和工作代码分开的建议,但至少目前是这样)。问题归结为:当一个按钮事件处理程序未完成时,需要单击另一个按钮两次。第一次单击将焦点赋予按钮,下一次单击触发事件。
这里是简化到极端的问题。有两个按钮和一个标签。停止按钮需要点击两次才能停止机器:
bool Stop = true;
private void Start_button_Click(object sender, EventArgs e)
{
RunMachine();
}
private void Stop_button_Click(object sender, EventArgs e)
{
Stop = true;
}
private void RunMachine()
{
Stop = false;
Status_label.Text = "Running";
do
{
Application.DoEvents();
Thread.Sleep(50);
}
while (!Stop);
Status_label.Text = "Stopped";
}
如何使按钮对第一次点击做出反应?
【问题讨论】:
标签: c# event-handling focus