Sprawdzona odpowiedź na to pytanie, przesłana przez vidalsasoon, jest błędna i błędna na wszystkie różne sposoby zadawania tego samego pytania.
Jest możliwe, że każda procedura obsługi zdarzenia zawierająca kod wymagający znacznego czasu przetwarzania może spowodować opóźnienie wyłączenia danego przycisku; niezależnie od miejsca, w którym wywoływana jest linia kodu w obrębie programu obsługi.
Wypróbuj poniższe dowody, a zobaczysz, że wyłączenie/włączenie nie ma związku z rejestracją zdarzeń. Zdarzenie click button jest nadal rejestrowane i nadal jest obsługiwane.
dowód nie wprost 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;
}
dowodu, 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();
}
Wygląda na to, że nie ma potrzeby dostosowywania/przesłonięcia wewnętrznej obsługi zdarzenia kliknięcia przez WPF? –