【发布时间】:2011-04-07 11:10:45
【问题描述】:
应该很简单,但是... :)
表单上只有一个按钮。该按钮调用一个函数,该函数需要 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 函数,我可以确定打印完成的时间,然后才能再次启用按钮。
【问题讨论】:
-
您是否尝试过 this.AcceptButton=null 并在完成设置后设置 this.AcceptButton=button1 以及切换 Enabled
-
@jfs:在问题中查看我的编辑。