【发布时间】:2019-02-19 12:18:21
【问题描述】:
我将按钮的“Enabled”property 更改为“false”,但我的按钮仍然捕捉到它的点击事件。我把 Thread.Sleep() 方法用来模拟一些过程。当我的按钮变灰时,我点击它,在当前进程完成后它再次开始工作(因为我在它变灰时点击了它)
这是我的代码:
int i = 0;
public Form1()
{
InitializeComponent();
label1.Text = "0";
}
private void button1_Click(object sender, EventArgs e)
{
//first click
button1.Enabled = false;
i++;
Thread.Sleep(3000); //if i click twice more while button is greyed-out the app will be non-responsive for 9 second and then prints "3" to my label
label1.Text = i.ToString();
button1.Enabled = true;
}
我怎样才能完全禁用我的按钮(不允许它的事件上升,但可见)?
【问题讨论】:
-
每次单击按钮时,UI 线程都会冻结 3 秒。
-
您试图在其单击事件中禁用该按钮,此时您的事件已经引发。您应该尝试在 Form1 ctor 中禁用它。
标签: c# .net winforms events button