2009-02-17 9 views
17

Ich habe ein Formular, das dynamisch erstellt wird. Es ist eine WinForms-Anwendung.Warum wird mein Validierungsereignis nicht in C# ausgelöst?

Dieses Formular ist nur ein Menü und eine Reihe von Textfeldern und Beschriftungen. In diesem Beispiel können Sie die Beschriftungen ignorieren.

Mein Problem ist: Wenn ich Sachen in den Textfeldern bearbeite, dann klicke auf das Menü, um "Save" auszugeben, der Text aus dem letzten Textfeld hat noch nicht seine "Validating" -Methode ausgegeben. Dies liegt daran, dass das Steuerelement immer noch den Fokus hat und dass sich das Menü in einem separaten Thread befindet.

Wie kann ich erzwingen, dass die Validierungsereignisse ausgelöst werden, wenn der Benutzer auf "Speichern" klickt? Ich weiß nicht, in welchem ​​Textfeld der Benutzer ist (falls vorhanden), und die Ausgabe von SomeKnownControl.Focus(); innerhalb der "Speichern" -Funktion scheint nicht zu helfen.

Antwort

28

Ich hatte das schon einmal. In dem Formular:

private void SaveButtonClick(...) 
{ 
    if (this.ValidateChildren()) 
    { 
     // do save 
    } 
} 

ValidateChildren on MSDN

+0

Das war es !!!! Vielen Dank!! – Jerry

+0

Kein Problem ... Es hat mich auch eine Weile überhäuft. – geofftnz

+1

Hmmm ... Ich denke, das Problem dabei ist, dass es das Validating-Ereignis auf allen untergeordneten Steuerelementen auslöst, nicht nur auf dem, das den Fokus hat. –

Verwandte Themen