TextBox Eingabe überprüfen
-
Hallo,
ich habe eine kleine Anwendung mit DB Zugriff geschrieben.
Nun möchte ich prüfen ob bei der Eingabe in das Feld "PLZ" das richtige
Format eingeben worden ist. Dazu habe ich folgenden Code://sind es nur Ziffern?
else
if (Int32::TryParse(kPLZTextBox->Text,plzTemp)== false){
MessageBox::Show("Das Format der PLZ ist ungültig!");
e->Cancel = true;
}
Aber leider Funktioniert das nicht. Hat jemand einen Tipp für mich?
Zur Info: plzTemp habe ich mit Int32 plzTemp; als Variablen
Der Compeiler gibt auch keine Fehlermeldung aus.
-
Mach das doch so...
Int32 postleitzahlTemp; //ist der Eintrag exakt 5 Zeichen lang? if(textBox1->Text->Length != 5) { MessageBox::Show("Die Postleitzahl muss 5 Ziffern lang sein!","Fehler...",MessageBoxButtons::OK,MessageBoxIcon::Error); } else { if (Int32::TryParse(textBox1->Text, postleitzahlTemp) == false) { MessageBox::Show("Das Format der Postleitzahl ist ungültig!","Fehler...",MessageBoxButtons::OK,MessageBoxIcon::Error); } else { MessageBox::Show("Die Postleitzahl ist gültig.","Info...",MessageBoxButtons::OK,MessageBoxIcon::Information); } }
Gruß, Doug_HH
-
Hallo Doug_HH,
danke für Dein Antwort, aber in deinen Code kann ich keinen grundzätzlichen
Unterschied zu meinen finden. Darum ihr einmal den gesamten Code der Methode.private: System::Void kPLZTextBox_Validating(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) {
//für die Prüfung der PLZ
Boolean fehlerKeinEintrag = false;
Int32 plzTemp;
//überprüfen ob das feld leer ist
if (kPLZTextBox->Text == String::Empty){
//Meldung anzeigen
MessageBox::Show("Sie müssen ein Wert für das Feld PLZ eingeben");
//die Aktion abbrechen
e->Cancel = true;
//fehlerKeinEintrag wird true, da die weitere Prüfung der PLZ nicht mehr erforderlich wird
fehlerKeinEintrag = true;
}
//die Detailprüfung für die PLZif ((kPLZTextBox->TextLength < 5) && (fehlerKeinEintrag == false)){
//ist der Eintrag exakt 5 Zeichen lang?
if (kPLZTextBox->Text->Length != 5){
MessageBox::Show("Die PLZ muss 5 Ziffern lang sein!");
e->Cancel = true;
}//sind es nur Ziffern?
else
if (Int32::TryParse(kPLZTextBox->Text, plzTemp)== false){
MessageBox::Show("Das Format der PLZ ist ungültig!");
e->Cancel = true;
}}
}Wie gesagt alles Funktioniert bis auf TryParse, es wird einfach nicht ausgeführt. kPLZTextBox ist eine Verknüpfung zu einem Feld in einer DB-Tabelle.
-
Hallo schuhe04,
so ganz stimmt der Code ja nicht mit meinem Vorschalg überein.
Zum einem steht else vor der if Abfrage zum Parsen ganz alleine rum, macht null Sinn das elsechen da.Zum anderen fehlen zwei geschweifte Klammern, die Deiner if Anwendung den richtigen Sinn geben um auch in den else-Block zukommen...
Und benutze bitte beim nächsten posten Code-Tags...zum Beispiel den C/C++, so lässt sich der Code schöner lesen.
private: System::Void kPLZTextBox_Validating(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { Boolean fehlerKeinEintrag = false; Int32 plzTemp; if (kPLZTextBox->Text == String::Empty)//überprüfen ob das feld leer ist { //Wenn Feld leer ist,Medlung anzeigen MessageBox::Show("Sie müssen ein Wert für das Feld PLZ eingeben"); //fehlerKeinEintrag wird true, da die weitere Prüfung der PLZ nicht mehr erforderlich wird fehlerKeinEintrag = true; //die Aktion abbrechen return; } //die Detailprüfung für die PLZ if ((kPLZTextBox->TextLength < 5) && (fehlerKeinEintrag == false)) { //ist der Eintrag exakt 5 Zeichen lang? if (kPLZTextBox->Text->Length != 5) { MessageBox::Show("Die PLZ muss 5 Ziffern lang sein!"); //die Aktion abbrechen return; } } else { //sind es nur Ziffern? if (Int32::TryParse(kPLZTextBox->Text, plzTemp)== false) { MessageBox::Show("Das Format der PLZ ist ungültig!"); //die Aktion abbrechen return; } } }
Aber ich denke mal, wenn Du mit den Debugger gearbeitet hättest, dann hättest Du auch gesehen, dass der Code nach dem parsen nicht mehr abgearbeitet wird.
Der Debugger ist nach wie vor ein wichtiges Werkzeug, ohne dem geht das programmieren nicht.
Ohne den Debugger ist das alles nur ein Rätselraten.Gruß, Doug_HH
-
Danke Doug_HH !!
-
hallo ! hat jemand ne Idee, wie ich dennoch falsche Angaben zu eurem Quelltext oben durch die Speichern-Taste abfangen kann ? Das Ereignis DataError gibts ja hierfür leider nicht
-
erledigt