ErrorProvider не разрешает пустое текстовое поле даты
-
22-09-2019 - |
Вопрос
Я использую ErrorProvider в VB.Net (2005), который связан с BindingSource, привязанным к созданному мной пользовательскому объекту.Этот настраиваемый объект содержит поле даты с типом данных «Дата».Я использую «TextBox» для привязки поля даты в моей форме.Моя проблема заключается в том, что всякий раз, когда TextBox теряет фокус и становится пустым, ErrorProvider отображает «Строка, не распознанная как допустимое значение DateTime», и фокус не может быть изменен на какой-либо другой элемент управления в форме.Хорошо, что ErrorProvider проверяет записи в полях даты по умолчанию (я не настроил свой пользовательский объект для отображения этой конкретной ошибки для даты), но он должен допускать пустые значения.Я хочу, чтобы у пользователя была пустая дата без отображения сообщения об ошибке. Как это можно сделать, используя поле даты, привязанное к текстовому полю?
Думаю, я мог бы просто изменить тип данных даты на строку в своем пользовательском объекте, но предпочел бы этого не делать.Я попытался установить для ErrorProvider пустую строку в событии «Проверка» для TextBox, но безуспешно.Спасибо за любую помощь.
Решение
свойство AutoValidate формы, содержащей элемент управления, определяет поведение в случае сбоя проверки.
я думаю, что у вас установлено значение «EnablePreventFocusChange», что делает невозможным изменение фокуса с недопустимого элемента управления.
Другие советы
Мне удалось привязать свойство даты к текстовому полю без проверки со стороны ErrorProvider.Я перетащил текстовое поле и ErrorProvider в форму и ввел следующий код в код формы.
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
Я не смог воссоздать вашу проблему.Может быть, ваша строка, которая привязывает данные к текстовому полю, отличается?или другое событие в текстовом поле устанавливает ErrorProvider?или другой элемент управления устанавливает ErrorProvider?