我们使用BusinessObjects,实现IDataErrorInfoIEditableObject。具有这些对象的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);

07-24 09:24