Вопрос

Я использую 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?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top