VB.Net Tabコントロール中のタブインデックスを取得する方法

このQ&Aのポイント
  • VB.NetのTabコントロールで、指定のタブのインデックスを取得する方法を解説します。
  • Tabコントロールの各タブには、Tagプロパティを使用して値を設定することができます。
  • For Each文を使用して、全てのタブを順番に取得し、Tagの値が指定した値と一致するかどうかを判定します。一致した場合は、そのタブのインデックスを取得します。
回答を見る
  • ベストアンサー

VB.Net Tabコントロール中のすべてのタブで

お世話になります。 Visual Studio 2012 を Windows 7 64Bit  にて使用しております。 Tabコントロールの全てのタブのタグ(Tag) に値を設定しており、変数と各タブページに格納してあるTag の値が一致したら、そのタブページのインデックスを取得できればと思っておりますが、 For Each Next 文にてそれをどう実現すればいいか困っております。 以下の文は プロパティ的にはめちゃくちゃですが、ニュアンスとして、こんな感じで実現できればと思っております。 指定タブコントロールの全てのタブの中でTagの値が 123 のタブがあったら、そのタブインデックスを取得する     Dim Flg As Integer = 0     For Each TabPage In Me.TabControl1.TabPages         If TabPage.Tag = 123 Then             Flg = TabPage.Index()             Exit For         End If     Next 何卒よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

Dim Flg As Integer = -1 '0だと見つかった場合と見つからない場合の区別ができないので、-1にしました For Each tb As TabPage In Me.TabControl1.TabPages  If tb.Tag = 123 Then   Flg = Me.TabControl1.IndexOf(tb)   Exit For  End If Next

kyokotan12
質問者

お礼

Picosoft さん 大変お世話になります。 ご提示いただきました プログラムで該当タブ位置を取得することができました。 大変助かりましたありがとうございました。

関連するQ&A

  • デルファイ TabControl タブの追加

    ターボデルファイです。 TabControlをフォームに置いたのですが、デフォルトはタブ1枚でみたいで、タブの追加はどうするのでしょか? ヘルプファイルには、個別のタブは「TabPage オブジェクト」とありますが、これがどこにあるかわかりません。 「TabControl の主要プロパティは TabPages 」ともありますが、これもどこにあるのか、見当たりません。

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

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

  • コントロールが配列かどうかを知るには?

    Visual Basic6.0(SP5)で伺いたいことがあります。 フォーム上の全てのオブジェクトを For Each文で取得しています。以下の様にです。 Dim Control As Object For Each Control In Form1.Controls If TypeOf Control Is Text Then End If Next Control このとき個々のControlがコントロール配列かどうかを知りたいのですが、どうすればよろしいでしょうか?フォーム上にはコントロール配列のオブジェクトも、コントロール配列ではないオブジェクトもあります。 Control.Indexの値を参照しようとしても、コントロール配列でない場合は 「配列ではないオブジェクトです」とエラーになります。 IsArray関数でもFalseになってしまいます。 何を行いたいかというと、そのControlがコントロール配列(Text1(0)とかText1(1)とか)かどうかを調べて、そのIndexをある関数の引数にしたいのです。全てコントロール配列だったら、Control.Indexで値を取得できるのですが。 よろしくお願いします。

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

  • C# csvをexcelシートのように No.2

    VS2017でC#を独学しています。 https://okwave.jp/qa/q9340465.html 上記で質問したように、Tabcontrolの中にタブページごとにdatagridview表を挿入し、 そこにCSVファイルを表示させたいと思っています。 今、このような形で動きますが、あってますでしょうか? 下記コードの回りくどい部分や、おかしい部分など教えていただけるとうれしいです。 よろしくお願いします。 private System.Windows.Forms.DataGridView dg; private TabPage tabPage9; private void button3_Click(object sender, EventArgs e) { tabPage9 = new TabPage(); tabPage9.Text = "Tab" + i; tabControl1.TabPages.Add(tabPage9); // 追加したタブページにdatagridviewを追加する。 this.dg = new System.Windows.Forms.DataGridView(); this.dg.Name = "dg"; tabPage9.Controls.Add(dg); this.dg.Dock = DockStyle.Fill; this.dg.Columns.Add("", "No"); this.dg.Columns.Add("", "Name"); this.dg.Rows.Add(3); this.dg[0, 0].Value = "aaa"; this.dg[0, 1].Value = "bbb"; i++; }

  • ページに乗っているコントロールの一覧を取得するコー

    タブコントロールのページに乗っているコントロールの一覧を取得するコードを教えてください。 あくせすです。 1ページ目には、コマンドボタン、テキストボックスが乗っています。 それを取得したいです。 2ページ目には違うコントロールが乗っています。 2ページ目のコントロールは取得したくないです。 http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200911/09110001.txt を参考に、 Sub test() For Each tabctl As TabPage In TabControl1.TabPages For Each ctl As Object In tabctl.Controls If ctl.Name.toString.IndexOf("TextBox") > -1 Then Dim tb As TextBox tb = DirectCast(ctl, TextBox) End If Next Next End Sub にしましたが構文エラーになってしまいました。 VB.NETのコードだからですよね。 VBAのコードをご教授いただけますか。よろしくお願いします。

  • タブ切替ボタンからのフォーカス移動について

    いつもお世話になっています。 VisualStudio2005,Vistaで開発しています。 タブコントロールのタブ切替ボタンにフォーカスが当たっている状態で左右キーを押すと、 隣のボタンにフォーカスが移ると共にアクティブなタブが変更されます。 その状態でTabキーを押すと、該当タブページの先頭オーダーを持つコントロールにフォーカスが移りますが、 これと同じ動作を下キー、Enterキーで実現したいと考えています。 テキストボックス等ではkeypressイベント、keydownイベントでフォーカス制御ができましたが、 どうもうまくいきません。 個々のタブページでは両イベントが発生せず、タブコントロール本体ではイベント自体は起きるものの、 コンボボックスの内容を変更するために押した下キーにすら反応してしまいます。 何か良い解決方法はありませんでしょうか。 皆様のお知恵をお貸しいただけましたら幸いです。

  • 複数のtabcontrol 選択式

    VB2008を使用しています。 Tabcontorol1のTabpage1の内訳をTabcontorol2で選択するフォームを考えています。 TabContorol 1が選択されている場合とtabcontrol2が選択されている場合で条件分岐を 使用したいのですが、判断の式はどのようなものになるのでしょうか? if (この部分の式) then if TabControl1.SelectIndex=1 then 処理1   EndIf if TabControl2.Selection.Index =1 Then 処理2 EndIf EndIf フォームのイメージとしては下記のようになります。 担当エリア 担当者 担当機種   <- TabContorol1 エリア1 エリア2 エリア3       <- TabControl2 担当エリア タブページを選択するとエリアが表示されます。 webで探した限りですが、こういった使用方法がまずは間違えているかもしれません。 既存のシステムの修正上、この方法が都合がよかったもので質問させていただきました。 基本的な質問であるとは思いますが、お力を貸していただきたくよろしくお願いします。

  • WinAPIでタブ付きのウィンドウを作成

    現在WinAPI(C++)でタブ付きのウィンドウを作成しようと思っているのですが、 タブコントロールとしてCreateWindowEX関数+WC_TABCONTROLで作成するしかないのでしょうか? 認識不足なら申し訳ありませんが、これはダイアログボックス内にタブを作成するものでしょうか? 行いたいのは、タブで切り替えれる+画像の描画可能+サイズの変更可能なウィンドウなのですが、 また、タブのデザインも変更できればいいんですが・・・ Visualやイラストレータのようなドラッグでウィンドウを移動させてタブから切り離し+ 再度タブ化するのは、どのように実現しているのでしょうか 開発環境はMicrosoft Visual C++ 2010 Expressです。 状況説明不足で申し訳ありませんが、ご教示お願いします。

  • フォーム上の全てのコントロールを取得したい

    フォーム上の全てのコントロールを取得したいです。 (サブフォームも含め) 自分なりにVBAで考えてみたのがこれです。 Sub test() Dim 数 As Long For Each 数 In Form_フォーム1.Controls.Count ’Debug.Print ? End If Next End Sub でもこれだけでもデバックしてみると 「コンハ゜イルエラー for Eachは、コレクション オブジェクトまたは配列でのみ繰り返しを実行します。」 となります。 答えを教えてください! よろしくお願いします。 (アクセス2003です)

専門家に質問してみよう