我不想让用户双击我的按钮。在第一次单击时,它应该被禁用,一旦我的代码被执行,我应该启用该按钮。怎么办?
答案 0 :(得分:8)
您可以使用Enabled属性。注册一个OnClick事件处理程序并将Enabled设置为false作为第一件事。然后开始计算并在完成后将Enabled恢复为true。如果计算需要很长时间才能完成,那么您应该启动第二个线程。在这种情况下,您可能需要使用Invoke方法重新启用该按钮。
答案 1 :(得分:3)
试试这个:
button.Enabled = false;
....... do main processing here ............
Thread.Sleep(1000);
Application.DoEvents();
button.Enabled = true;
答案 2 :(得分:1)
在OnClick
事件处理程序中,将第一个语句设为button.Enabled = false;
,将最后一个语句设为button.Enabled = true;
。
答案 3 :(得分:1)
假设这是一个你正在谈论的winform,一旦你禁用了按钮,附加到它的事件就不会触发。 (如果我从经验中记得正确的话)
解决这个问题的方法是有2个按钮,一个启用,一个禁用。当用户单击第一个按钮时,您可以隐藏它并显示已禁用的按钮,使其看起来像是同一个按钮被禁用。
然后,当您完成代码执行后,只需重新显示第一个按钮并重新隐藏第二个按钮。
答案 4 :(得分:1)
在您的鼠标Click事件中使Button.Enabled = false,并在代码的末尾使其成为真实
答案 5 :(得分:0)
据我所知,您打算这样做的唯一目的是阻止相同的代码执行两次。
为什么不在处理程序方法中使用类级布尔变量。
如果设置了变量,则调用将返回,否则代码将被执行 - 最终重置布尔变量。