【发布时间】:2013-12-20 18:13:21
【问题描述】:
我有一个包含许多用户控件和每个按钮的应用程序,每个按钮都有一个 OnClick 事件,该事件执行一些重要的操作,然后发送到新的用户控件。
当用户多次点击非常快时,问题就出现了,事件代码在退出到新的用户控件之前执行了多次,从而导致问题。
我目前的解决方案是禁用事件处理程序第一行的按钮,但是对每个窗口和处理程序都这样做会很麻烦,我该怎么办?
编辑:从 Button 派生并覆盖 OnClick 事件是否是一个很好的解决方案,因此它总是检查“工作”变量,如果它是真的,它不会启动事件?比如:
public class MyButton : Button
{
private static bool isWorking = false;
protected override void OnClick(EventArgs e)
{
if (!isWorking)
{
isWorking = true;
base.OnClick(e);
isWorking = false;
}
//Else do nothing
}
}
【问题讨论】: