新しいWinFormに検証を追加しているところです。エラープロバイダーコントロールと組み合わせて、検証イベントと検証済みイベントを使用しています。以下のコードを参照してください。
最初の検証に問題はありません(つまり、ユーザーが12文字を超えて入力した場合)。検証イベントでエラーが設定され、ユーザーが12文字以下を入力するまでエラーが続きます。次に、検証されたイベントが入力され、エラーが空の文字列にリセットされます。
ただし、同じテキストボックスでの2回目の検証には問題があります。コードはテキストボックスで長さがゼロかどうかをチェックし、プロバイダーにエラーを設定します。デバッガーで監視すると、このコードが実際に呼び出され、エラーが正常に設定されます。次に、何か奇妙なことが起こり、検証されたイベントが(予期せずに)発生し、そこにあるコードがエラーを即座にリセットします。
すでにエラーセットがあるのに、検証されたイベントが発生するのはなぜですか?これは.NETのバグのようです。誰かがこれを行う別の方法を提案したり、私が間違っていることを言うことができますか?
ありがとう、
バザ
Private Sub SampleCodeTextBox_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles SampleCodeTextBox.Validating
If SampleCodeTextBox.Text.Length > 12 Then
e.Cancel = True
FormErrorProvider.SetError(SampleCodeTextBox, "Max of 12 characters for sample code")
End If
If SampleCodeTextBox.Text.Trim.Length = 0 Then
FormErrorProvider.SetError(SampleCodeTextBox, "Must enter a sample code")
End If
End Sub
Private Sub SampleCodeTextBox_Validated(sender As Object, e As System.EventArgs) Handles SampleCodeTextBox.Validated
FormErrorProvider.SetError(SampleCodeTextBox, "")
End Sub