Desativar clique no botão do evento c #

Eu programo no Visual Studio 2013 C #. Eu quero ter uma funcionalidade para desativar por um curto período de tempo um botão. Eu tentei button.Enabled=false , mas vejo que quando eu clico nele durante a desativação, a ação de clique começa logo depois que eu obtenho esse botão habilitado em outro local do programa.

Como limpar esse evento ou bloqueá-los quando o botão está desativado?

Atenciosamente, Krzysztof

para desabilitar o clique do botão.

 button1.Click -= button1_Click; // here button1_Click is your event name 

para ativar o clique do botão.

 button1.Click += button1_Click; // here button1_Click is your event name 

Você não pode apenas verificar o estado do botão antes de executar comandos no método? Por exemplo:

 void Click(object sender, EventArgs e) { if(!(sender as Button).Enabled) return; //other statements } 

Esta é a maneira extremamente simples que encontrei na internet e funciona.

  1. Desative o (s) botão (ões)
  2. Execute o que for necessário para ser executado no procedimento
  3. Execute este comando Application.DoEvent(); . Este comando enfileira todos os events de cliques (tantos quantos o usuário clicou) e os ignora / elimina
  4. Ativar o botão (s) no final

Boa sorte

Experimentar

 YourButton.Attributes.Add("onClick", ""); 

Para remover seu onClick completamente.

e depois

  YourButton.Attributes.Add("onClick", "YourButton_Click"); 

Para adicioná-lo novamente.

Mas o seu programa não deve executar o Click quando você diz que sim. É provável que haja algo errado na lógica do seu código.

Veja este código abaixo, depois de clicar no botão 2, o botão 1 está desativado. enquanto o botão 1 estiver desativado, clique no botão 1. Após o botão 1, ative automaticamente após 5 segundos a atualização textBox1 para “Update”.

  private void button1_Click(object sender, EventArgs e) { textBox1.Text = "Update"; } private void button2_Click(object sender, EventArgs e) { button1.Enabled = false; Thread.Sleep(5000); button1.Enabled = true; } private void button3_Click(object sender, EventArgs e) { textBox1.Text = ""; }