【发布时间】:2009-06-09 14:54:25
【问题描述】:
我在提交 Web 请求的表单上有一个 Windows 表单按钮。我希望能够在第一次单击按钮时禁用它,然后在收到响应时重新启用它。我对被调用的代码及其调用方式没有太多控制权,所以我只能玩 Button 事件,或者我可以创建自己的从 Button 继承的按钮,如下所示:
public class SingleClickButton : Button
{
protected override void OnClick(EventArgs e)
{
bool wasEnabled = this.Enabled;
this.Enabled = false;
if (wasEnabled)
{
base.OnClick(e);
}
}
}
我必须最后调用基本 OnClick 方法,因为在 Web 请求完成之前按钮不会禁用。
我遇到的问题是,如果用户确实单击了多次,则单击事件似乎已经建立并且仍然被执行。有没有办法取消所有排队的事件?或者我的问题有更简单的解决方案吗?
【问题讨论】: