TextBox validieren
-
Hallo,
ich habe ein WinForm auf dem ich eine TextBox und die Buttons OK und Abbrechen habe. Ich möchte die TextBox gerne dahin validieren dass, es zu einer Fehlermeldung kommt wenn man auf OK klickt und die Validierung nicht ok war.
Das ganze habe ich mit der Eigenschaft Validating der Textbox gemacht. Das Funktioniert schon ganz gut, nur reagiert die Validierung auch auf den Abbruchbutton.
Wie kann ich die TextBox validieren, dass nur der OK Button geprüft wird?
private: System::Void textBox1_Validating(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) { if (this->textBox1->Text == "") { MessageBox::Show("Bitte Projektnamen eingeben"); e->Cancel = true; } else { if (this->textBox1->Text->StartsWith(" ")) { MessageBox::Show("Projektnamen kann nicht mit einem Leerzeichen beginnen"); e->Cancel = true; } else { e->Cancel = true; } } }
DANKE schonmal
-
Wie kann ich die TextBox validieren, dass nur der OK Button geprüft wird?
Mal ein Vorlesen aus der MSDN:
Wenn Sie den Fokus mithilfe der Tastatur (TAB, UMSCHALT+TAB usw.), durch Aufrufen der Select-Methode oder der SelectNextControl-Methode oder durch Festlegen der ContainerControl..::.ActiveControl-Eigenschaft auf das aktuelle Formular ändern, treten die Fokusereignisse in der folgenden Reihenfolge ein:
Enter
GotFocus
Leave
Validating
Validated
LostFocusWenn Sie den Fokus mit der Maus oder durch Aufrufen der Focus-Methode ändern, treten die Fokusereignisse in der folgenden Reihenfolge ein:
Enter
GotFocus
LostFocus
Leave
Validating
ValidatedWenn die CausesValidation-Eigenschaft auf false festgelegt ist, werden das Validating-Ereignis und das Validated-Ereignis unterdrückt.
Wenn die Cancel-Eigenschaft von CancelEventArgs im Validating-Ereignisdelegaten auf true festgelegt wird, werden alle normalerweise nach dem Validating-Ereignis eintretenden Ereignisse unterdrückt.
Pack die Validierungsfunktion in eine eigene Methode, die Du nur bei ButtonOK aufrufst.
-
das hatte ich bereits, jedoch geht dann das Fehlerfenster sowie das eigentlich Fenster anschließend zu.
-
Wie hast Du den Button eingetragen bzw. rufst Du bei ButtonOK_Click (oder wie auch immer das bei Dir heißen mag) ein Close aus ?
void btn_Abbrechen_Click() { DialogResult = DialogResult::Abort; Close(); } void btn_OK_Click() { DialogResult = DialogResult::OK; Close(); } void Form_Closing() { if(DialogResult == DialogResult::Abort) return; e.Cancel = !validatingInput(); } bool validatingInput() { if(allesOk) return true else return false; }
-
ich rufe eigentlich nichts weiter auf.
e->Cancel steht in der button1_Click Funktion leider nicht zur Verfügung.private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { textBoxValid(); } private: System::Void textBoxValid() { if (this->textBox1->Text == "") { MessageBox::Show("Bitte Projektnamen eingeben"); } }
-
e->Cancel steht in der button1_Click Funktion leider nicht zur Verfügung.
Mach die Augen auf und Benutzer die MSDN, dann siehst Du wohin das e.Cancel gehört. (Auch im Obigen Beispiel.)
Darst ruhig Eigeninitiative zeigen, schlägt Dich keiner für.Hast Du in der Form AcceptButton und CancelButton festgelegt ? Hast Du Dir das Pseudocode Beispiel denn mal angesehen was gepostet wurde?
-
Knuddlbaer schrieb:
e->Cancel steht in der button1_Click Funktion leider nicht zur Verfügung.
Mach die Augen auf und Benutzer die MSDN, dann siehst Du wohin das e.Cancel gehört. (Auch im Obigen Beispiel.)
Darst ruhig Eigeninitiative zeigen, schlägt Dich keiner für.Hast Du in der Form AcceptButton und CancelButton festgelegt ? Hast Du Dir das Pseudocode Beispiel denn mal angesehen was gepostet wurde?
habs hinbekommen, danke!
entilzah