dポイントプレゼントキャンペーン実施中!

お世話になっております
VB.NET 2010
Windows7
Windowsフォーム画面の開発をしています

タブコントロールについてです
現在、タブページを使用しており、1ページ目で検索、2ページ目に検索結果一覧、3ページ目で詳細が見れるようになっています

1ページ目に検索条件を入れ2ページ目のタブを押すと、入力ミスがあったら2ページ目に遷移せずに入力ミスしたコントロールの場所にフォーカスが飛び、正常なら検索され2ページ目に遷移します

ここで質問なのですが、今現在TabControl.Selection イベントに入力チェック、検索処理を書いています
入力チェックでミスがあった場合にタブページを移動しないこと、1ページから2ページ遷移で検索処理を起こすため、次のタブページを検知しなければいけないからです
ですが、入力ミスが起こった際、フォーカスが入力ミスした項目に飛びません
1ページ目の最初の項目に飛んでしまいます
おそらく、タブページ移動(2ページ目に飛ぶ)→入力ミスでフォーカス移動→タブページ移動キャンセル(2ページ目から1ページ目に飛ぶことでタブコントロールにフォーカス移動)→タブページの次の項目
となっていると思われます

DeSelectingイベントに入れると、入力ミスした際にエラーのある項目に飛ぶのですが、そうすると2ページ目に移動しようとしたのか、3ページ目に移動しようとしたのかが分からなくなってしまいます

押したタブページが検知でき、なおかつキャンセルされたときにフォーカスが移動できるような方法ありますでしょうか
よろしくお願いします

A 回答 (1件)

Private errorFlag As Boolean



Private Sub TabControl1_Selecting(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles TabControl1.Selecting
errorFlag = False
If e.TabPageIndex = 1 Then
If Me.TextBox1.Text = "" Then
' エラーの場合
e.Cancel = True
errorFlag = True
Me.TextBox1.Focus()
End If
End If
End Sub

のようにしておいて、errorFlag = True の場合のみ

Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If errorFlag Then
e.Cancel = True
errorFlag = False
End If
End Sub

のようにしてはどうでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!