<分区>
我有一个应用程序有许多用户控件和每个按钮上的许多按钮,每个按钮都有一个 OnClick 事件,该事件会执行一些重要的操作,然后发送到新的用户控件。
当用户多次快速点击时,问题就来了,事件代码在退出到新的用户控件之前被执行了不止一次,从而导致了问题。
我目前的解决方案是在事件处理程序的第一行禁用按钮,但是对每个窗口和处理程序都这样做会很麻烦,我该怎么办?
编辑:从 Button 派生并覆盖 OnClick 事件是否是一个很好的解决方案,以便它始终检查“工作”变量,如果它是 true,它不会启动事件?像这样的东西:
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
}