ここに私の状況があります:私はTabControl
2 つのTabPage's
( tabPage1
& tabPage2
) を持っています。tabPage2
私が作成したカスタム ユーザー コントロールがあり (複数のフォームで使用されているため) 、カスタム ユーザー コントロールのイベントをTextBox
介していくつかのカスタム検証がアタッチされています。無効なデータを選択してテキスト ボックスに入力し、テキスト ボックスを離れようとすると、検証は正常に機能し、カスタム イベント ハンドラーが実行され、指示どおりに動作しますValidating
。tabPage2
ただし、(この同じシナリオで)テキストボックスを離れるのではなくtabPage1
fromに切り替えると、に切り替えることができますtabPage2
tabPage1
. 私のテキストボックスは2回検証されます。また、テキストボックスが無効であることが判明した場合にテキストボックスにフォーカスを与えるため、フォーム上で他のものを制御することはできませんが、テキストボックスに有効なデータを入れることができません! (すべてが理にかなっていることを願っています。必要に応じて明確にするために私に尋ねることを恐れないでください。)
これが私の質問です。フィールドが無効であることが判明したときにタブが切り替わらないようにするにはどうすればよいですか。したがって、検証が 2 回実行されるという問題も解決しますか?
ここに私のコードがあります: (このメソッドは、前述のカスタム ユーザー コントロールに含まれています。)
private void OnValidatingUserControl(object sender, CancelEventArgs args)
{
if (IsTextBoxInvalid())
{
args.Cancel = true;
MessageBox.Show("Invalid data in text box!!!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.textBox.Focus();
}
}