Entwickler-Ecke

WinForms - In einer Schleife überprüfen, ob Button geklickt wurde


Orothred - Mi 26.09.07 08:54
Titel: In einer Schleife überprüfen, ob Button geklickt wurde
Hi!

Ich lasse einen Button mit Hilfe einer for-schleife von unten nach oben durch eine Form laufen. Wenn er oben angekommen ist, beginnt er wieder unten und läuft die form erneut durch. das ganze macht er 5 mal.

nun will ich während des schleifendurchlaufs überprüfen, ob der button angeklickt wurde. wenn er angeklickt wurde, soll der schleifendurchlauf abgebrochen werden und der nächste durchlauf soll gestartet werden. wie mach ich das? so was wie if (Button1.MouseClick) funktioniert ja nicht


JüTho - Mi 26.09.07 09:36

Abgesehen vom Sinn eines solchen Verfahrens - es geht z.B. so:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
private bool mouseClicked = false;

//  Deine (äußere) Schleife prüft im Rahmen der Startmaßnahmen u.a.:
if (mouseClicked) {
  //  beginne den nächsten Durchlauf, dazu:
  mouseClicked = false;
}

//  Deine (innere) Schleife prüft im Rahmen der Schlussmaßnahmen u.a.:
  if (mouseClicked) {
    //  Abbruch des aktuellen Durchlaufs
    break;
  }

//  der Maus-Click wird einfach registriert:
private void ButtonClick(object sender, EventArgs e) {
  mouseClicked = true;
  //  vielleicht ist zusätzlich nötig:
  Application.DoEvents();
}

Die Detailprüfungen musst Du Dir selbst ausdenken. Die erforderliche Verzögerung hast Du wahrscheinlich beim Verschieben des Buttons schon berücksichtigt.

Gruß Jürgen