DataBinding和ErrorProvider - 如何提供自定义错误消息?
问题描述:
我们使用BusinessObjects,实施IDataErrorInfo
和IEditableObject
。 BindingList
将这些对象添加到BindingSources中,这些用于绑定窗体上的UserControls和DataGrid(WinForms)。 BindingSource
另外被设置为表格的ErrorProvider
的数据源。DataBinding和ErrorProvider - 如何提供自定义错误消息?
我们使用当前文本框的类型为int和short的属性。它们在BusinessObjects中通过自定义验证进行了验证,例如最小/最大值等。这很好,因为我们的自定义验证的错误消息很好地显示在TextBox旁边。但是,如果输入大于int的值(例如“9999999999”),BindingSource甚至不会尝试将该值输入到BusinesObject中,而是将错误消息提供给错误提供程序,如“The value for Int32太大了。“我们不想用“Int32”来打扰我们的用户,但需要一个自定义的错误消息。
很好,BindingSource确实提供了这个功能,但是可以为此提供自定义错误消息吗?
答
您需要将FormattingEnabled属性设置为false以禁用错误处理行为。
像这样:
textBox1.DataBindings.Add("Text", bindingSource1, "IntValue", false,
System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged);
即停止这些自动生成的消息。至少第一步。接下来的事情就是捕捉所有输入,验证它们并提供自定义错误消息。谢谢你。 – 2010-04-14 08:12:46