Die überprüfte Antwort auf diese Frage, eingereicht von vidalsasoon, ist falsch und es ist falsch für all die verschiedenen Möglichkeiten, die diese Frage gestellt wurde.
Es ist möglich, dass jeder Event-Handler, der Code enthält, der eine signifikante Prozesszeit benötigt, zu einer Verzögerung der Deaktivierung der Schaltfläche führen kann. unabhängig davon, wo die deaktivierende Codezeile innerhalb des Handlers aufgerufen wird.
Probieren Sie die unten stehenden Beweise und Sie werden sehen, dass disable/enable keine Korrelation mit der Registrierung von Ereignissen hat. Das Klickereignis ist weiterhin registriert und wird weiterhin verarbeitet.
Widerspruchsbeweis 1
private int _count = 0;
private void btnStart_Click(object sender, EventArgs e)
{
btnStart.Enabled = false;
_count++;
label1.Text = _count.ToString();
while (_count < 10)
{
btnStart_Click(sender, e);
}
btnStart.Enabled = true;
}
Nachweis von Contradition 2
private void form1_load(object sender, EventArgs e)
{
btnTest.Enabled = false;
}
private void btnStart_Click(object sender, EventArgs e)
{
btnTest.Enabled = false;
btnTest_click(sender, e);
btnTest_click(sender, e);
btnTest_click(sender, e);
btnTest.Enabled = true;
}
private int _count = 0;
private void btnTest_click(object sender, EventArgs e)
{
_count++;
label1.Text = _count.ToString();
}
Es scheint nicht trotzdem zu sein, die interne Handhabung des Klickereignisses durch WPF anzupassen/zu überschreiben? –