VB.Net Tabコントロール中のタブインデックスを取得する方法
- 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 何卒よろしくお願いいたします。
- kyokotan12
- お礼率59% (106/178)
- Visual Basic
- 回答数1
- ありがとう数2
- みんなの回答 (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
関連するQ&A
- デルファイ TabControl タブの追加
ターボデルファイです。 TabControlをフォームに置いたのですが、デフォルトはタブ1枚でみたいで、タブの追加はどうするのでしょか? ヘルプファイルには、個別のタブは「TabPage オブジェクト」とありますが、これがどこにあるかわかりません。 「TabControl の主要プロパティは TabPages 」ともありますが、これもどこにあるのか、見当たりません。
- ベストアンサー
- その他(プログラミング・開発)
- VB タブページの自動切り替え方法(マウスカーソル
質問よろしくお願いします。環境はVisualBasic 2008です。 タブコントロール内にいくつかのタブページがあるとして、タブの見出し部分(タブページではない)にマウスカーソルがあったらそのタブをアクティブにする(選択された状態にする)にはどのようにすればいいのでしょうか。 ようするに、マウスカーソルによってタブを自動的に切り替えたいのです。 MouseHoverイベントなどで試していますが、TabPage1もTabPage2もクリック情報をみるとTabControl1をクリックしたことになっていて、判定により特定のタブをアクティブにすることができません。 ぜひご教授願います。
- ベストアンサー
- Visual Basic
- コントロールが配列かどうかを知るには?
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で値を取得できるのですが。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- 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 を使用しても、タブページが移動した後に、ブレーク(コールされてしまう)してしまいます・・・。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- 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++; }
- ベストアンサー
- C・C++・C#
- ページに乗っているコントロールの一覧を取得するコー
タブコントロールのページに乗っているコントロールの一覧を取得するコードを教えてください。 あくせすです。 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イベントでフォーカス制御ができましたが、 どうもうまくいきません。 個々のタブページでは両イベントが発生せず、タブコントロール本体ではイベント自体は起きるものの、 コンボボックスの内容を変更するために押した下キーにすら反応してしまいます。 何か良い解決方法はありませんでしょうか。 皆様のお知恵をお貸しいただけましたら幸いです。
- ベストアンサー
- Visual Basic
- 複数の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で探した限りですが、こういった使用方法がまずは間違えているかもしれません。 既存のシステムの修正上、この方法が都合がよかったもので質問させていただきました。 基本的な質問であるとは思いますが、お力を貸していただきたくよろしくお願いします。
- ベストアンサー
- Visual Basic
- WinAPIでタブ付きのウィンドウを作成
現在WinAPI(C++)でタブ付きのウィンドウを作成しようと思っているのですが、 タブコントロールとしてCreateWindowEX関数+WC_TABCONTROLで作成するしかないのでしょうか? 認識不足なら申し訳ありませんが、これはダイアログボックス内にタブを作成するものでしょうか? 行いたいのは、タブで切り替えれる+画像の描画可能+サイズの変更可能なウィンドウなのですが、 また、タブのデザインも変更できればいいんですが・・・ Visualやイラストレータのようなドラッグでウィンドウを移動させてタブから切り離し+ 再度タブ化するのは、どのように実現しているのでしょうか 開発環境はMicrosoft Visual C++ 2010 Expressです。 状況説明不足で申し訳ありませんが、ご教示お願いします。
- ベストアンサー
- C・C++・C#
- フォーム上の全てのコントロールを取得したい
フォーム上の全てのコントロールを取得したいです。 (サブフォームも含め) 自分なりにVBAで考えてみたのがこれです。 Sub test() Dim 数 As Long For Each 数 In Form_フォーム1.Controls.Count ’Debug.Print ? End If Next End Sub でもこれだけでもデバックしてみると 「コンハ゜イルエラー for Eachは、コレクション オブジェクトまたは配列でのみ繰り返しを実行します。」 となります。 答えを教えてください! よろしくお願いします。 (アクセス2003です)
- ベストアンサー
- オフィス系ソフト
お礼
Picosoft さん 大変お世話になります。 ご提示いただきました プログラムで該当タブ位置を取得することができました。 大変助かりましたありがとうございました。