2009-12-31 73 views
1

我在VB.Net(2005)中使用了與綁定到我創建的自定義對象的BindingSource相關聯的ErrorProvider。此自定義對象包含具有「日期」數據類型的日期字段。我正在使用「文本框」來綁定我的表單中的日期字段。我的問題是,每當TextBox失去焦點並且爲空時,ErrorProvider將顯示「字符串未被識別爲有效的DateTime」,並且焦點不能更改爲窗體上的任何其他控件。 ErrorProvider默認驗證日期字段上的條目(我沒有設置自定義對象來顯示日期的特定錯誤)是好事,但它應該允許空白值。我希望用戶能夠顯示空白的日期而不顯示錯誤消息。 如何使用綁定到TextBox的Date字段來完成此操作?ErrorProvider不允許空白日期文本框字段

我想我可以將日期數據類型更改爲我的自定義對象中的字符串,但不希望這樣做。我嘗試將ErrorProvider設置爲TextBox的「驗證」事件中的空字符串,但沒有運氣。感謝您的幫助。

回答

2

包含控件的形式的AutoValidate屬性定義在驗證失敗時
我想你被設定爲「EnablePreventFocusChange」,這使得不可能將焦點從一個無效控制

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?

+0

翻錄改變行爲,我認爲您的示例和我的區別在於,我正在使用BindingSource和我的自定義對象。 ErrorProvider像這樣綁定到綁定源:ErrorProvider1.DataSource = MyBindingSource。當您使用此方法時,不像使用TextBox1那樣顯式綁定單個控件,並且您不在控件上的任何事件中設置ErrorProvider。 – OneSource 2010-01-02 12:52:55

相關問題