ErrorProvider não permitindo o campo da caixa de texto em branco
-
22-09-2019 - |
Pergunta
Estou usando o ErrorProvider em VB.Net (2005), associado a um BindingSource que está vinculado a um objeto personalizado que eu criei. Este objeto personalizado contém um campo de data que possui um tipo de dados "data" que. Estou usando uma "caixa de texto" para vincular o campo Data no meu formulário. Meu problema é que, sempre que a caixa de texto perde foco e está em branco, "String não reconhecida como um datetime válida" é exibida pelo ErrorProvider e o foco não pode ser alterado para qualquer outro controle no formulário. É bom que o ErrorProvider valida as entradas nos campos de data por padrão (não configurei meu objeto personalizado para exibir esse erro específico para a data), mas deve permitir valores em branco. Quero que o usuário possa ter uma data em branco sem nenhuma mensagem de erro exibida. Como isso pode ser feito usando um campo de data ligado a uma caixa de texto?
Acho que poderia apenas alterar o tipo de dados de data para uma string no meu objeto personalizado, mas preferiria não fazer isso. Tentei definir o ErrorProvider em uma string vazia no evento "validando" para a caixa de texto, mas sem sorte. Obrigado por qualquer assistência.
Solução
A propriedade autovalidada do formulário que contém o controle define o comportamento quando a validação falha
Eu acho que o seu está definido como "enablepreventFocusChange", o que torna impossível alterar o foco de um controle inválido
Outras dicas
Consegui vincular uma propriedade de data a uma caixa de texto sem a validação de um incentivo de erros.
Public Class Form1
Private _P As Person
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
_P = New Person With {.DOB = Date.Today}
Me.TextBox1.DataBindings.Add("Text", _P, "DOB", True, DataSourceUpdateMode.OnPropertyChanged, Nothing)
End Sub
End Class
Public Class Person
Private _DOB As Date
Public Property DOB() As Date
Get
Return _DOB
End Get
Set(ByVal value As Date)
_DOB = value
End Set
End Property
End Class
Eu não conseguia recriar o problema que você estava tendo. Talvez sua linha que os bancos de dados a caixa de texto seja diferente? Ou um evento diferente na caixa de texto está definindo o ErrorProvider? Ou um controle diferente está definindo o ErrorProvider?