• 締切済み

VB.NET2003でのTABControlイベントについて

TabControlの処理について教えて下さい。 TabControlの外に貼り付けたTextBoxの内容が変更された場合、タブのページを変える前に問い合わせのメッセージを表示したいのですがうまくいきません。 具体的には、TabControlのSelectedIndexではページが変わった後にイベントが発生するので遅いのです。また、TabPageのValidatingでは、タブ上のコントロールにフォーカスが当たっていないとイベントすら発生しないし... アドバイスをよろしくお願いします。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

やはり SelectIndeChangeedイベント辺りしかないように思います MouseDownもClickも SelectedIndexChangedの後でしか呼ばれないですよね Formの Newプロシージャの中でIntializeComponentを呼び出した後に 現在のSelectedIndexを保存しておき SelectedIndexChangedイベントに来た際にチェックするようにしてはいかがでしょう Sub SelectedChangeed(引数省略) handlers TabControl1.SelectedChangeed Static bFlag as Boolean = False ' 再帰で呼ばれたときの対策 if bFlag then Exit Sub if myIndex<>0 then if myTextBox.Text<>"123" then ' 再帰対策 bFlag = True TabControl1.SelectedIndex = 0 bFlag = False end if end if End Sub といった具合でしょう

wish_xasp
質問者

お礼

ご回答ありがとうございます。 やはりTABのページは変わってしまうのですね。 でもTABページ以外のコントロールの変化を見つけるのだからSelectedIndexChangedしかないのでしょうね。 とても参考になりました。有難う御座いました。

関連するQ&A

  • TabControlのタブをクリックしたときのイベントは?

    TabControlのタブをクリックしたときにイベントを発生させたいのですが、TabControlのメンバに該当するようなイベントが見つかりませんでした。 Tabpageメンバも見てみましたが無かったように思います。 TabControlのタブをクリックしたときのイベントは無いということでしょうか。

  • VB2005でのTabControlについて

    VB2005でTabControlを使用しているのですが、 タブ部分にフォーカスを移し、尚かつクリックした時のように四角い点線でフォーカスを移したタブを囲うにはどうしたらよいのでしょうか? 単にフォーカスを合わせるだけなら Me.TabPage1.Focus() と書くだけで良かったのですが、どうにも点線がつきません。 分かる方がいらっしゃいましたらご回答宜しくお願い致します。

  • TabControlが変る瞬間イベント

    初心者です。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 を使用しても、タブページが移動した後に、ブレーク(コールされてしまう)してしまいます・・・。 よろしくお願い致します。

  • 【VB】タブ切り替え時のイベント

    いつもお世話になります。バージョンはVB2005です。 フォームにTabControlを配置し、適当にタブ(TabPage1~3)を追加しています。 それぞれのタブを切り替えたときに発生するイベントがわかりません。(><) Clickイベント、CursorChangedイベント、Gotfocusなどなどいろいろ試してみましたが駄目でした。 おわかりの方、どうかご教授ください。

  • Validated イベントについて

    textboxのValidated について調べたのですがMSDNライブラリで検索したところ Validated コントロールの検証が終了すると発生します。 とあります。このコントロールの検証とは何ですか 具体的にわかりやすく教えてください 同様に Validating コントロールが検証を行っているときに発生します これについても具体的にわかりやすく教えてください。 質問をまとめると ValidatedとValidatingのイベントについてわかりやすく 教えて下さいということです。

  • vb2005 で複数のテキストボックスのイベントについて

    vb2005で タブの中に、複数のテキストボックスが存在しています。(15個程) その中の指定した10個のみ、フォーカスを外したときにイベントを 発生させるよい方法はありますでしょうか。 一つのテキストボックスは下記で行えるのですが、複数の場合よい方法はありますでしょうか。 Private Sub Textabc_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles Textabc.Validating ~~処理~~ End Sub

  • Validatingイベントについて

    VB.NETのValidatingイベントでフォーカスが移動しようとしている(移動先の)コントロールが何であるかを取得することはできるでしょうか?

  • タブコントロールのフォーカス枠を消したい

    VB.NET(VB2008)について質問です。 タブ式テキストエディタを作っているのですが、タブが選択されると そのタブのTextBoxにフォーカスを当てたいので TabControlのMouseDownイベントでTextBoxにフォーカスを移すようにしたのですが、その方法だと一瞬クリックしたタブにフォーカス枠が表示され、ちらついて見えます。 そこで、TabControlを継承して以下のようにすればフォーカス枠が消えるだろうと思ったのですが、ダメでした。 Public Class myTabPage Inherits TabControl Protected Overrides ReadOnly Property ShowFocusCues() As Boolean Get ShowFocusCues = False End Get End Property End Class ボタンなどの場合はこの方法でフォーカス枠を消すことができたのですが、TabControlの場合は無理なのでしょうか。 他の方法があったらご教授ください。

  • VB タブページの自動切り替え方法(マウスカーソル

    質問よろしくお願いします。環境はVisualBasic 2008です。 タブコントロール内にいくつかのタブページがあるとして、タブの見出し部分(タブページではない)にマウスカーソルがあったらそのタブをアクティブにする(選択された状態にする)にはどのようにすればいいのでしょうか。 ようするに、マウスカーソルによってタブを自動的に切り替えたいのです。 MouseHoverイベントなどで試していますが、TabPage1もTabPage2もクリック情報をみるとTabControl1をクリックしたことになっていて、判定により特定のタブをアクティブにすることができません。 ぜひご教授願います。

  • コマンドボタンのEnterイベント後に、フォーカスを移動したい。

    コマンドボタンのEnterイベント後に、フォーカスを移動したい。 フォームに「TextBox1」(TabIndex=0)「TextBox2」(TabIndex=1)「CommandButton1」(TabIndex=2)の3つのコントロールがある場合。 CommandButton1がクリックされた場合も、TextBox2からCommandButton1に、タブキーまたはエンターキーで、フォーカスが移った場合にも、同じ処理を行い、処理結果によってTextBox1やTextBox2にフォーカスを移したいと考えています。 以下のようなサンプルを作成しました。 Private Sub CommandButton1_Enter() CommandButton1_Click End Sub Private Sub CommandButton1_Click() MsgBox ("OK") TextBox2.SetFocus End Sub この場合、CommandButton1_Enterのイベントが起こった場合、CommandButton1_Click()のTextBox2.SetFocusは効きません。 (正確には、CommandButton1_Enterイベントが終わった時点で無効でしょうか。) Enterイベントは、フォーカスが移動する前に発生するため、このイベントが終わった後に、そもそもの動作に戻り、フォーカス移動が発生してしまうからなのだと思っております。 要は、コマンドボタンにタブキーやエンターキーでフォーカスしても、コマンドボタンをクリックしたのと同じ処理を行い、所定の位置にフォーカスを持っていきたいのですが、どのように行えば良いか、わからない状況です。 よろしくお願いいたします。

専門家に質問してみよう