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.

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top