2009-02-17 6 views
17

J'ai un formulaire qui est créé dynamiquement. C'est une application winForms.Pourquoi mon événement de validation ne se déclenche-t-il pas en C#?

Ce formulaire est juste un menu et une série de zones de texte et d'étiquettes. Dans l'intérêt de cet exemple, vous pouvez ignorer les étiquettes.

Mon problème est le suivant: Lorsque j'édite des éléments dans les zones de texte, puis cliquez sur le menu pour lancer "Enregistrer", le texte de la dernière zone de texte n'a toujours pas publié sa méthode "Validation". Cela semble être dû au fait que le contrôle a toujours le focus et que le menu est dans un thread distinct.

Comment puis-je forcer la validation des événements de validation lorsque l'utilisateur clique sur "enregistrer"? Je ne sais pas quelle zone de texte l'utilisateur est sur (le cas échéant), et l'émission SomeKnownControl.Focus(); dans la fonction "enregistrer" ne semble pas aider.

Répondre

28

Je l'ai eu avant. Dans votre formulaire:

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

ValidateChildren on MSDN

+0

C'était ça !!!! Je vous remercie!! – Jerry

+0

Pas un problème ... Ça m'a aussi bloqué pendant un moment. – geofftnz

+1

Hmmm ... Je pense que le problème avec ceci est qu'il déclenche l'événement Validating sur tous les contrôles enfants, pas seulement celui qui a le focus. –

Questions connexes