1

私が作成したカスタム オブジェクトにバインドされている BindingSource に関連付けられている VB.Net (2005) で ErrorProvider を使用しています。このカスタム オブジェクトには、「日付」データ型を持つ日付フィールドが含まれています。「TextBox」を使用してフォームの日付フィールドをバインドしています。私の問題は、TextBox がフォーカスを失って空白になるたびに、「有効な DateTime として認識されない文字列」が ErrorProvider によって表示され、フォーカスをフォーム上の他のコントロールに変更できないことです。ErrorProvider がデフォルトで日付フィールドのエントリを検証するのは良いことですが (この日付の特定のエラーを表示するようにカスタム オブジェクトを設定していません)、空白の値を許可する必要があります。ユーザーがエラーメッセージを表示せずに日付を空白にできるようにしたい.

カスタム オブジェクトで日付データ型を文字列に変更することもできると思いますが、これは避けたいと思います。TextBox の「Validating」イベントで ErrorProvider を空の文字列に設定しようとしましたが、うまくいきませんでした。ご協力ありがとうございます。

4

2 に答える 2

2

コントロールを含むフォームの AutoValidate プロパティは、検証が失敗したときの動作を定義し
ます

于 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 に答える