Pergunta

Utilizamos BusinessObjects, implementando IDataErrorInfo e IEditableObject. BindingLists 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?

Foi útil?

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top