Entwickler-Ecke

WinForms - Eingabe wiederholen lassen


grisu2611 - Sa 13.10.07 13:33
Titel: Eingabe wiederholen lassen
Hallo,

ich mache eine Eingabe in eine TextBox und möchte diese Abfragen! Wenn die Abfrage nicht passt soll die TextBox gelöscht und die Eingabe wiederholt werden! Zusätzlich soll eine MessageBox erscheinen!

Habe diesen Code geschrieben aber irgendwie komme ich immer in eine Endlosschleife rein!


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
private void prüfungStartBtn_Click(object sender, EventArgs e)
        {
            
            // Netzgerät ansteuern
            kanal = 0;
            
                if (box12V.Checked)
                {
                    do
                    {
                        spannung = Convert.ToDouble(txtBoxPrüfSpg.Text);
                        if (spannung <= 11.0 || spannung >= 14.3)
                        {
                            MessageBox.Show("Bitte Spannungsbereich von 11,1V und 14,3V einhalten"
                                "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            txtBoxPrüfSpg.Clear();
                        }
                    } while (spannung <= 11.0 || spannung >= 14.3);

                    double spannung1 = spannung / 3.0;
                    ausgabeSpg(kanal, spannung1);
                        
                }
}


Danke für eure Hilfe im Vorraus


Christian S. - Sa 13.10.07 13:42

Hallo!

Du hast da einen Denkfehler drin. Du gibst dem Nutzer ja gar keine Zeit, eine Eingabe zu tätigen. Du müsstest, wenn man das so machen würde, auf die Nutzereingabe warten. Aber man wartet in WinForms nicht auf Benutzereingaben, sondern man reagiert auf Ereignisse.

Daher: Wenn die Eingabe nicht stimmt, eine Meldung ausgeben, Textfeld leeren und Methode komplett abbrechen. Der Nutzer klickt den Button dann erneut, sobald er die Eingabe gemacht hat.

Grüße
Christian


grisu2611 - Sa 13.10.07 13:48

ja danke!

habe auch gerade meinen fehler selber gefunden!

gebe einfach ein return unter dem löschen der TextBox ein und es funktioniert!

Danke!!