我们使用BusinessObjects,实现IDataErrorInfo
和IEditableObject
。具有这些对象的BindingList
添加到BindingSources中,用于绑定窗体(WinForms)上的UserControls和DataGrids。另外,将BindingSource
设置为表单的ErrorProvider
的数据源。
目前,我们确实将TextBoxes用于int和short类型的Properties。它们在BusinessObjects内部通过自定义验证进行了验证,例如最小/最大值等。这样做很好,因为错误消息形式来自我们的自定义验证,因此很好地显示在TextBox旁边。
但是,如果输入大于int的值(例如“ 9999999999”),则BindingSource甚至不会尝试将该值输入到BusinesObject中,而是向errorprovider提供错误消息,例如“ Int32的值太大” ”。我们不想用“ Int32”打扰我们的用户,但是想要一个自定义的错误消息。
很好,BindingSource确实提供了此功能,但是是否可以为此提供自定义错误消息?
最佳答案
您需要将FormattingEnabled属性设置为false以禁用错误处理行为。
像这样:
textBox1.DataBindings.Add("Text", bindingSource1, "IntValue", false,
System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged);