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