DataBinding e ErrorProvider – Como fornecer mensagens de erro personalizadas?
-
23-09-2019 - |
Pergunta
Utilizamos BusinessObjects, implementando IDataErrorInfo
e IEditableObject
. BindingList
s com esses objetos são adicionados a BindingSources, que são usados para vincular UserControls e DataGrids nos formulários (WinForms).O BindingSource
é adicionalmente definido como DataSource para o ErrorProvider
do formulário.
Atualmente usamos TextBoxes para propriedades do tipo int e short.Eles são validados dentro do BusinessObjects com validação customizada, como valores mínimo/máximo, etc.Isso funciona bem, já que a mensagem de erro de nossas validações personalizadas aparece bem ao lado do TextBox.
No entanto, se a entrada for maior que o valor de um int (por exemplo"9999999999") o BindingSource nem tenta inserir esse valor no BusinesObject, mas em vez disso fornece a mensagem de erro ao provedor de erros como "O valor para Int32 era muito grande".Não queremos incomodar nossos usuários com "Int32", mas queremos uma mensagem de erro personalizada para isso.
É bom que o BindingSource forneça esse recurso, mas é possível fornecer mensagens de erro personalizadas para isso?
Solução
Você precisa definir Formatação habilitada propriedade como false para desabilitar o comportamento de tratamento de erros.
Assim:
textBox1.DataBindings.Add("Text", bindingSource1, "IntValue", false,
System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged);