1

我在 VB.Net (2005) 中使用 ErrorProvider,它与绑定到我创建的自定义对象的 BindingSource 相关联。此自定义对象包含具有“日期”数据类型的日期字段。我正在使用“文本框”来绑定表单中的日期字段。我的问题是,每当 TextBox 失去焦点并且为空白时,ErrorProvider 就会显示“字符串无法识别为有效的 DateTime”,并且无法将焦点更改为表单上的任何其他控件。默认情况下,ErrorProvider 验证日期字段上的条目很好(我没有设置我的自定义对象来显示日期的这个特定错误),但它应该允许空白值。我希望用户能够拥有一个不显示错误消息的空白日期。

我想我可以将日期数据类型更改为自定义对象中的字符串,但不希望这样做。我尝试在 TextBox 的“验证”事件中将 ErrorProvider 设置为空字符串,但没有运气。感谢您的任何帮助。

4

2 回答 2

2

包含控件的表单的 AutoValidate 属性定义了验证失败时的行为,
我认为您的设置为“EnablePreventFocusChange”,这使得无法从无效控件更改焦点

于 2010-01-04T11:57:45.353 回答
0

我设法将一个日期属性绑定到一个文本框,而没有从 ErrorProvider 开始验证。我将一个 Textbox 和一个 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?

于 2010-01-01T14:25:07.437 回答