Laden...

Button merkt sich Klicks trotz enabled=false

Erstellt von Catwiesl vor 13 Jahren Letzter Beitrag vor 13 Jahren 670 Views
Thema geschlossen
C
Catwiesl Themenstarter:in
7 Beiträge seit 2010
vor 13 Jahren
Button merkt sich Klicks trotz enabled=false

Hallo,

ich habe das Problem, dass sich ein deaktivierter Button die Klicks auf ihn merkt und nach dem Aktivieren die Button_Klick_Events trotzdem alle ausführt.

Für den folgenden Beispielcode bedeutet das, dass nach 5 schnellen Klicks nicht 1 sonder 5 im Label steht.


int number = 0;
private void button1_Click(object sender, EventArgs e)
{
  button1.Enabled = false;
  number++;
  label1.Text = number.ToString();
  Thread.Sleep(1000);
  button1.Enabled = true;
}

Die Artikel
Wenn Button enabled=false, dann auch ALLE klick-Events der Form solange deaktivieren
und
[FAQ] Warum blockiert mein GUI?
haben mir so nicht weitergeholfen.

Folgende Ansätze habe ich versucht, haben aber nicht geklappt:

  • Auslagern des arbeitsintensiven Codes in einen Backgroundworker, der nach dem Ende den Button wieder enabled.
  • Abmelden des Do-Events beim Eintritt in die Funktion und Anmelden des Events beim Verlassen.

Kennt Ihr eine Lösung?

MfG

Gelöschter Account
vor 13 Jahren

DAs funktinoiert nicht, weil die Gui blockiert ist, die messages aber dennoch in die Nachrichtenpumpe laufen und dannach auf einen Enabled=True button stoßen...

Folgende Ansätze habe ich versucht, haben aber nicht geklappt:

  • Auslagern des arbeitsintensiven Codes in einen Backgroundworker, der nach dem Ende den Button wieder enabled.

Hier hast du was falsch gemacht. Dieser Ansatz ist der richtige

R
103 Beiträge seit 2009
vor 13 Jahren

Hihi, das Ergebnis hätte ich jetzt auch so erwartet.

nehm mal das enabled = true heraus.

Deine testroutine enabled den Knopf ja wieder am Ende. Das Sleep() im gui thread sorgt auch dafür, dass die folgenden Mouseclick events nicht abgearbeitet werden können. Trotzdem gehen sie aber nicht verloren, da sie noch in der MessageQueue sind

Edit: Aha mal wieder jemand schnekller =)

Thema geschlossen