应该很简单,但是... :)
我的表格上只有一个按钮。这个按钮调用一个函数,需要执行10秒(例如)。我想在这段时间内暂时禁用按钮,这样如果用户在函数执行时按下Enter键,就不会发生任何事情。
但现在它的工作方式是:用户按下Enter键,按钮变为禁用状态。在这10秒内,用户再次按下Enter键,当第一个函数完成时,它被再次调用。我想防止这种情况发生,所以只有当按钮重新启用时,Enter键才能起作用。所有内容都在同一个线程中。
我的代码:
我的表格上只有一个按钮。这个按钮调用一个函数,需要执行10秒(例如)。我想在这段时间内暂时禁用按钮,这样如果用户在函数执行时按下Enter键,就不会发生任何事情。
但现在它的工作方式是:用户按下Enter键,按钮变为禁用状态。在这10秒内,用户再次按下Enter键,当第一个函数完成时,它被再次调用。我想防止这种情况发生,所以只有当按钮重新启用时,Enter键才能起作用。所有内容都在同一个线程中。
我的代码:
private void button1_Click(object sender, EventArgs e)
{
Debug.WriteLine("Click");
button1.Enabled = false;
Thread.Sleep(3000); // simulate something...
button1.Enabled = true;
button1.Focus();
}
编辑:该函数将内容打印到打印机上。通过打印机的API函数,我可以确定何时完成打印,只有在此之后按钮才能重新启用。