2010-09-23 2 views
2

Lorsque j'essaie de valider les contrôles sur un formulaire Windows, je réalise que le .validated() pour chaque contrôle se déclenche lorsque le focus est perdu. Au lieu de cela je voudrais valider seulement quand le bouton est pressé au fond, comment je ferais ceci?Effectuer toutes les validations à la fois

Répondre

0

vous pouvez consulter la condition de validation Button_Click

/// <summary> 
    /// 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void button1_Click(object sender, EventArgs e) 
    { 
     if (!String.IsNullOrEmpty(txtUserName.Text)) 
     { 
      MessageBox.Show("Please enter user Name"); 
     } 
     else if(condition) 
     { 
     } 
     ........... 
    } 
+0

Je crois que l'OP parle d'invoquer ses "validateurs" seulement sur le bouton clic au lieu de sur le focus perdu – InSane

+0

J'ai fini par utiliser cette –

1

Lorsque vous définissez la propriété CausesValidation true la .Validating (et plus tard: .Validated) événement se déclenche lorsque vous quittez le contrôle. Définissez-le sur false ou ne gérez simplement pas l'événement. Pour faire la validation au niveau du formulaire, gérez l'événement .Closing (mieux que le Buttonclick) et écrivez votre logique là-bas. Il n'y a aucun sens à appeler les gestionnaires d'événements Validating.

1

Définissez AutoValidate sur AutoValidate.Disable et dans l'événement click button, appelez la méthode ValidateChildren() (tous les événements "validating/validated" seront lancés). MSDN

Questions connexes