プロが教える店舗&オフィスのセキュリティ対策術

初心者です。vb2005で、Tabcontrol1を所持しています。

このコントロールにタブページは4つ持っています。

タブページのタブ釦をクリックしたときと、タブページにフォーカスがある状態で、
左右釦をクリックした場合、通常ならタブページが変わります。

このタブページが変わる前の瞬間に発生するイベント処理をしたいです。

そしてそのイベント内で、もしタブ内の値がおかしいなら、タブページを移動しないようにしたいです。


TabControl1_Selected_click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl1.Click
や、
TabControl1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged

を使用しても、タブページが移動した後に、ブレーク(コールされてしまう)してしまいます・・・。

よろしくお願い致します。

A 回答 (2件)

WndProcでTCM_SETCURSEL, WM_KEYDOWN, WM_NCHITTESTを捕獲


http://dobon.net/vb/bbs/log3-15/8361.html
    • good
    • 1

TabControl 内にある各 TabPage コントロールの Validating イベントを使って、TAB ページ内のコントロールの値を評価するとか。



Private Sub TabPage1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles TabPage1.Validating
If Not IsNumeric(TextBox1.Text) Then
e.Cancel = True
End If
End Sub



んでもイベントが呼び出されるきっかけが 「現在の TAB ページから他に移る時」 なので、「他の TAB ページに移る時」 とは違ってしまいます。
つまり他の TAB ページに移るんではなく、フォーム内の別の(例えば TabControl 外のテキストボックスなど)に移ろうとしても Varidating イベントは動いてしまうので、TextBox1 の値が適切じゃなければ TabControl 外のコントロールにも移動できなくなってしまいます。
    • good
    • 0

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