2010-04-01 3 views
2

Nous utilisons BusinessObjects, en implémentant IDataErrorInfo et IEditableObject. BindingList s avec ces objets sont ajoutés à BindingSources, ceux-ci sont utilisés pour lier UserControls et DataGrids sur les formulaires (WinForms). Le BindingSource est en outre défini comme DataSource pour le ErrorProvider du formulaire.DataBinding et ErrorProvider - Comment fournir des messages d'erreur personnalisés?

Nous utilisons actuellement TextBoxes pour les propriétés de type int et court. Ils sont validés à l'intérieur de BusinessObjects avec une validation personnalisée, comme les valeurs min/max, etc. Cela fonctionne bien, puisque le message d'erreur de nos validations personnalisées s'affiche à côté de la TextBox. Cependant, si l'entrée est supérieure à la valeur d'un int (par exemple "9999999999"), BindingSource n'essaie même pas d'entrer cette valeur dans BusinesObject mais donne l'erreur au fournisseur d'erreur comme "La valeur pour Int32 était trop grand. " Nous ne voulons pas déranger nos utilisateurs avec "Int32" mais voulons un message d'erreur personnalisé pour cela.

Il est agréable, que le BindingSource fournit cette fonction, mais est-il possible de fournir des messages d'erreur personnalisés pour cela?

Répondre

1

Vous devez définir la propriété FormattingEnabled à false pour désactiver le comportement de gestion des erreurs.

Comme ceci:

textBox1.DataBindings.Add("Text", bindingSource1, "IntValue", false, 
    System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged); 
+0

qui arrête les messages générés automatiquement. Au moins un premier pas. La prochaine chose sera alors d'attraper toutes les entrées, de les valider et de fournir des messages d'erreur personnalisés. Merci pour ça. –

Questions connexes