Domanda

Sto utilizzando l'ErrorProvider in VB.Net (2005) che è associato con un BindingSource che è destinata a un oggetto personalizzato che ho creato. Questo oggetto personalizzato contiene un campo data che ha un tipo di dati "Data" che. Sto usando un "TextBox" per associare il campo della data nella mia forma. Il mio problema è, ogni volta che il TextBox perde lo stato attivo ed è vuoto, "String non riconosciuto come un DateTime valido" viene visualizzato dal ErrorProvider e la messa a fuoco non può essere cambiato in qualsiasi altro controllo sul modulo. E 'bene che l'ErrorProvider convalida voci su campi Data per impostazione predefinita (non ho impostato il mio oggetto personalizzato per visualizzare questo errore particolare per la data), ma dovrebbe consentire valori vuoti. Voglio che l'utente sia in grado di avere una data vuota senza alcun messaggio di errore visualizzato. Come può essere fatto utilizzando un campo Data legato ad una TextBox?

Credo che avrei potuto semplicemente cambiare la data tipo di dati in una stringa nel mio oggetto personalizzato, ma preferirei non farlo. Ho provato a installare l'ErrorProvider su una stringa vuota in caso "Convalida" per il controllo TextBox, ma senza fortuna. Ringraziamenti per qualsiasi assistenza.

È stato utile?

Soluzione

la proprietà AutoValidate del modulo che contiene il controllo definisce il comportamento quando la validazione fallisce
Credo che il vostro è impostato su "EnablePreventFocusChange", il che rende impossibile cambiare la messa a fuoco da un controllo non valido

Altri suggerimenti

Sono riuscito a legare una proprietà data per una casella di testo, senza la convalida da un ErrorProvider calci. Ho trascinato una casella di testo e un ErrorProvider su ad una forma ed è entrato il seguente codice nel codice del modulo dietro.

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

Non ho potuto ricreare il problema si stavano avendo. Forse la linea che databinds la casella di testo è diverso? o un evento diverso sulla casella di testo è l'impostazione della ErrorProvider? o un controllo diverso è l'impostazione del ErrorProvider?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top