DataBinding и ErrorProvider - Как предоставить пользовательские сообщения об ошибках? - PullRequest
2 голосов
/ 01 апреля 2010

Мы используем BusinessObjects, реализующие IDataErrorInfo и IEditableObject. BindingList с этими объектами добавляются в BindingSources, которые используются для связывания пользовательских элементов управления и DataGrids в формах (WinForms). BindingSource дополнительно устанавливается в качестве источника данных для ErrorProvider формы.

В настоящее время мы используем TextBox для свойств типа int и short. Они проверяются внутри BusinessObjects с пользовательской проверкой, такой как минимальные / максимальные значения и т. Д. Это прекрасно работает, так как сообщение об ошибке из наших пользовательских проверок отображается рядом с TextBox.

Однако, если входное значение больше значения типа int (например, «9999999999»), BindingSource даже не пытается ввести это значение в объект BusinesObject, а вместо этого выдает сообщение об ошибке поставщику ошибок, например «Значение для Int32». был слишком большой. Мы не хотим беспокоить наших пользователей «Int32», но хотим для этого сделать специальное сообщение об ошибке.

Хорошо, что BindingSource предоставляет эту функцию, но возможно ли предоставить для этого специальные сообщения об ошибках?

1 Ответ

1 голос
/ 09 апреля 2010

Необходимо установить для свойства FormattingEnabled значение false, чтобы отключить обработку ошибок.

Как это:

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