• ベストアンサー

C# タブのコントロール取得

お世話になります。 FOAM上のコントロールを取得する場合は foreach (Control ctr1 in Controls){ } で取れますが、FOAM上のTabControlにADDしてあるコントロールを取得することができませんでした。 タブコントロールまでは取得できますが…。 タブ上に配置してあるオブジェクトを取得するには どのようにしたらよいのでしょうか? お知恵を拝借できればと思います。 よろしくお願いします。

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

  • ベストアンサー
  • SHIMAPEE
  • ベストアンサー率75% (154/203)
回答No.2

こんばんわ、C#を勉強中の者です。 コントロールはtabControlではなくtabPageにAddしてあるのではないでしょうか。 C#2005 ExpressでForm1にtabControl1を乗せ、tabPage2にbuttonなどを乗せて下記のコードを試してみましたところ、乗っているbuttonなどの名前が見えました。 foreach (Control ctr1 in tabPage2.Controls){ MessageBox.Show(ctr1.Name); } 下記のコードでtabPageの名前が見えます。 foreach (Control ctr1 in tabControl1.Controls){ MessageBox.Show(ctr1.Name); }

ema-1234567890
質問者

お礼

回答ありがとうございます ADDしてあるところで見るのですね! 解決しました m(_"_)m

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1
ema-1234567890
質問者

お礼

ありがとうございます ただ、よく分かりませんでした TabControlに乗っているオブジェクトはforeachでは とれないということでしょうか

ema-1234567890
質問者

補足

誤字指摘ありがとうございます。 それからタグのページを動的に作りたいわけではありません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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 何卒よろしくお願いいたします。

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

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

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

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

  • C# 複数コントロールへの一括処理

    フォーム上に多数のコントロールがあり、そのコントロールの名前は連番になっています。 コントロールに対して一括して処理を行いたいのです。 例えばbutton1~10まで、フォーム内に対しては下記のコードでいけました。 for (int index = 1; index <= 10; index++) { ((Button)this.Controls[string.Format("button{0}", index)]).Text = "AAAAAAAAA"; } これをタブコントロール内にすべて入れ、下記のようにコードを書き換えました。 for (int index = 1; index <= 10; index++) { ((Button)tabControl1.Controls[string.Format("button{0}",index)]).Text = "AAAAAAAAA"; } しかし「System.NullReferenceException」のエラーが出ます。 何が間違っていますか?

  • 【C#】動的に作成した、TABへのイベント設定

    始めまして、質問をお願い致します。 ある明細行をクリックすると、TAB形式の一覧を表示します。 明細行に紐づくデータの単位にTAB表示させたいので、以下のコードをループさせ、動的にTABの生成をすることが出来ました。 this.tabControl1.Controls.Add(testTabPage[i]); TABがクリックされた際、個別にデータをDBより取得して表示したいのですが、TABごとのイベント設定方法がわかりません。 動的に作成したTABへ、クリックした際のイベント設定方法を、ご教示頂けませんでしょうか。 また、TABコントロールの参考になるサイト等も教えて頂ければ幸いです。 ----------- |明細クリック| ----------- ↓ ----------------- | tab1 | tab2 | tab3 | --------------------------- | データ   | |--------------------------| | データ   | |--------------------------| | データ   | |--------------------------| どうぞ、宜しくお願い致します。

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

    タブコントロールのページに乗っているコントロールの一覧を取得するコードを教えてください。 あくせすです。 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のコードをご教授いただけますか。よろしくお願いします。

  • タブコントロール上のピクチャーコントロールへの描画

    お世話になっております。 VC2005を使用しております。 SDIベースです。 ダイアログを作成し、その上にタブコントロール(2ページ)を作成しました。 タブコントロールの1ページ目にピクチャーコントロールを配置し、ピクチャーコントロール上に描画を行おうと思うのですが、正常に動作しません。 OnPaintの中で描画を行っているのですがだめのようです。 タブコントロール外に、ピクチャーコントロールを配置すると描画する事ができます。 どのような、タイミングで描画を行えばよいのでしょうか? 教えてください。 よろしくお願いします。

  • Access VBAでタブコントロールで選択するタブをしていするには。

    Access VBAでタブコントロールで選択するタブをしていするには。 Access のフォーム上に,「ページ1」「ページ2」「ページ3」タブを配置しました。その横にボタンを3個配置して,ボタンクリックでそれぞれ対応するタブを選択(クリックしたのと同じ状態に)させたいのですが,どなたか方法を知りませんか? よろしくお願いいたします。

  • C# 動的に読み込んだコントロールの削除

    C#にて動的に読み込んだ不特定多数のコントロールを削除する正しい手順は どのような物でしょうか。 MSDNによるとコンテナに読み込んだコントロールをFlowLayoutPanel.Clear()で クリアするとメモリリークにつながるため、Dispose()をしろとあります。 動的に作成したコントロールが不特定多数のため、Foreach文をつかい FlowLayoutPanel.Controlsで確認できた物をDispose()しましたが、偶数indexの コントロールしか削除されませんでした。 まぁ、これはなんとなく分かるのですが、では、正しくすべてのコントロールを 削除するにはどうしたら良いのか分かりません。 ご教示のほど、よろしくお願いいたします。 確認コード(空のForm1_Loadに貼り付け) ※現象を再現させるためのサンプルで意味はありません // コントロール配置用のコンテナ FlowLayoutPanel panel = new FlowLayoutPanel(); panel.Dock = System.Windows.Forms.DockStyle.Fill; this.Controls.Add(panel); // テストコントロール追加ボタン Button create = new Button(); create.Size = new Size(50, 25); create.Text = "create"; create.Click += (ss, ee) => { for (int i = 0; i < 100; i++) { TextBox text = new TextBox(); text.Size = new Size(50, 25); text.Text = i.ToString(); panel.Controls.Add(text); } }; panel.Controls.Add(create); // コントロール削除ボタン Button delete = new Button(); delete.Size = new Size(50, 25); delete.Text = "delete"; delete.Click += (ss, ee) => { foreach (var control in panel.Controls) { if (control is TextBox) { ((TextBox)control).Dispose(); } } }; panel.Controls.Add(delete);

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

    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で値を取得できるのですが。 よろしくお願いします。