2009-07-02 7 views
0

J'ai fait une zone de texte personnalisé hier avec sa propre validateur:Qu'est-ce qui provoque la validation sur ma zone de texte?

public partial class CustomTextBox : TextBox 
{ 
    ErrorProvider errorProvider; 

    public CustomTextBox() 
    {    
     InitializeComponent(); 
     errorProvider = new ErrorProvider(); 
     errorProvider.DataSource = this; 
    }   


    protected override void OnValidating(CancelEventArgs e) 
    { 
     base.OnValidating(e); 
     if (this.Text.Trim() == "") 
     { 
      errorProvider.SetError(this, "Required field"); 
      e.Cancel = true; 
      return; 
     } 
     errorProvider.SetError(this, ""); 
    } 


} 

Alors je mets cela sur un formulaire avec un bouton annuler et CausesValidation false sur le bouton d'annulation. J'ai également placé des causesValidation sur le formulaire à faux. Pour une raison quelconque, si je clique sur annuler, ma zone de texte personnalisée continue de déclencher l'événement onValidating. Des idées sur ce qui en est la cause? Je ne voudrais rien valider mes zones de texte jusqu'à ce que je clique sur un bouton de soumission qui va essayer de valider tous les contrôles sur le formulaire. De cette façon, un utilisateur n'est pas forcé d'entrer des données dans le contrôle avant de passer à un autre. Semble raisonnable? C'est mon premier crack à une interface utilisateur Winforms.

Répondre

0

J'ai trouvé plus tard une simple propriété de la forme appelée AutoValidate. Je l'ai mis à EnableAllowFocusChange et maintenant j'ai le comportement exact que je veux, le errorprovider avertira quand un utilisateur laisse le contrôle et la validation échoue, mais l'utilisateur n'est pas limité au contrôle.

0

On dirait que c'est un problème connu: Visual Studio Feedback.

J'ai défini AutoValidate = AutoValidate.Disable; sur le formulaire, et il n'est plus validé. Cependant, je ne suis pas sûr de savoir dans quelle mesure vous correspondriez à vos exigences.

Questions connexes