ErrorProvider不允许空白日期TextBox字段

时间:2009-12-31 10:36:56

标签: vb.net date bindingsource errorprovider

我正在使用VB.Net(2005)中的ErrorProvider,它与绑定到我创建的自定义对象的BindingSource相关联。此自定义对象包含具有“日期”数据类型的日期字段。我使用“TextBox”来绑定表单中的日期字段。我的问题是,只要TextBox失去焦点并且为空白,ErrorProvider就会显示“String not not a valid DateTime”,并且焦点不能更改为Form上的任何其他控件。默认情况下,ErrorProvider验证Date字段上的条目是好的(我没有设置我的自定义对象来显示日期的这个特定错误),但它应该允许空值。我希望用户能够有一个空白日期,不显示错误消息。 如何使用绑定到TextBox的Date字段来完成?

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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?