La réponse vérifiée à cette question, soumise par vidalsasoon, est fausse et elle est erronée pour toutes les différentes façons dont cette même question a été posée.
Il est possible que tout gestionnaire d'événement qui contient du code nécessitant un temps de traitement important puisse retarder la désactivation du bouton en question; indépendamment de l'endroit où la ligne de code de désactivation est appelée dans le gestionnaire. Essayez les preuves ci-dessous et vous verrez que désactiver/activer n'a aucune corrélation avec l'enregistrement des événements. L'événement de clic sur le bouton est toujours enregistré et est toujours géré.
Preuve par Contradiction 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;
}
Preuve par 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();
}
Il ne semble pas y avoir d'ajustement ou de remplacement de la gestion interne de l'événement click par WPF. –