ErrorProvider Non Permettere Blank Data TextBox Campo
-
22-09-2019 - |
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.
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?