解決済みの質問
初心者です。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
を使用しても、タブページが移動した後に、ブレーク(コールされてしまう)してしまいます・・・。
よろしくお願い致します。
投稿日時 - 2010-11-12 17:12:14
WndProcでTCM_SETCURSEL, WM_KEYDOWN, WM_NCHITTESTを捕獲
http://dobon.net/vb/bbs/log3-15/8361.html
投稿日時 - 2010-11-12 18:22:53
0人が「このQ&Aが役に立った」と投票しています
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 外のコントロールにも移動できなくなってしまいます。
投稿日時 - 2010-11-13 12:08:22
OKWaveのオススメ
おすすめリンク