У меня есть кнопка Windows Forms на форме, которая отправляет веб-запрос. Я хочу иметь возможность отключить кнопку при первом нажатии, а затем повторно включить ее, когда я получу ответ. У меня нет большого контроля над кодом, который вызывается, и тем, как он вызывается, поэтому все, с чем я могу поиграть, это события 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 последним, поскольку кнопка не будет отключена, пока не завершится веб-запрос.
Проблема, с которой я столкнулся, заключается в том, что если пользователь нажимает несколько раз, события щелчка, похоже, накапливаются и все еще выполняются. Есть ли способ отменить все события в очереди? Или есть гораздо более простое решение моей проблемы?