• ベストアンサー

vb2008 コントロール配列

VB6からVB2008へ移行を検討しているものです。 そこで質問なんですが、VB2008でコントロールの反復処理はどう処理すればいいのでしょうか? VB6の時はコントロール配列を使用して、ForNextで繰り返せばそれらしいことはできました。VB2008はコントロール配列がサポートされていないのでどうすればいいかわかりません。みなさんはどう反復処理を行っているのか教えていただきたいと思います。 具体的な処理として、テキストボックス1~10があり、そのテキストボックスの内容を1~10の順番で、テキストボックス11~20に格納する。以上、宜しくお願いします。

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

  • ベストアンサー
  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、 VB2008を利用して実行しましたが、 たぶん、VB6と同様なコードだといもいますが。 テキストボックスの数は、少ないですが。 以下を応用すれば、簡単だと思いますよ。 もっと、スマートなコードがあるもいますが。 フォームを、立ち上げ、テキストボックス1,2のテキストプロパティに、テキストを代入して、 ボタンを押すと、テキストボックス3、4にそれぞれを 代入 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim tb As String = "TextBox" For i As Integer = 0 To 1 Me.Controls(tb & (i + 3)).Text = Me.Controls(tb & (i + 1)).Text Next End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TextBox1.Text = "いひひひひ" TextBox2.Text = "うひひひひ" End Sub

butman11
質問者

お礼

回答ありがとうございました。 VB6の時のコントロール配列と似たような記述方法ですね! さっそくいろいろ試してみます。 ありがとうございました。

その他の回答 (1)

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

コントロール配列自体はなくなってしまいましたが コントロール型の配列変数は宣言できます フォームクラスの変数として dim tb(20) as TextBox などと宣言しておいて フォームクラスの Newメソッド追加し InitializeComponentを呼び出した後で 配列tbに Controlsコレクションから抽出して代入するか ハードコーディングで個別に代入式を書いてしまうか といった方法で VB6と同じ感覚で コーディングできると思いますよ たとえば dim n as Integer = 0 for each ctl as Control in Me.Controls   if typeof ctl is TextBox then     tb(nm) = ctl     n = n + 1   end if next といった具合で配列に代入するとか ・・・

butman11
質問者

補足

回答ありがとうございました。 上記のコードの場合、フォームのコントロールを抽出し、その中のテキストボックスをtb()に格納するのは理解したんですが、テキストボックス1~10以外にもテキストボックスが存在した場合や、格納する順番も考慮したい場合はどうしたらいいのでしょうか? テキスト1~10の順番で、テキストの内容を参照したいと思っています。 以上、宜しくお願いします。再度ご回答いただけたら嬉しいです。

関連するQ&A

  • VB2005 コントロール配列について教えていただけませんか?

    現在VB2005を用いてプログラムを行なっている初心者です。 ここのサイトでVB2005ではコントロール配列は使用できないことを知りました。そこで、例えばフォーム上にTextBoxを5個配置して、各TextBoxに入力された値を配列に格納するのにはどのようにすれば良いでしょうか? data(0) = textbox1.text data(1) = textbox2.textと一つずつやるしかないでしょうか・・・ For文などを用いて簡単にできる方法を教えてください。 よろしくお願い致します。

  • VB.NETでテキストボックスをコントロール配列のように扱いたいんですが

    VB.NETではコントロール配列はサポートされていませんが、TextBox1~TextBox10を配列のように扱う方法はありますか?ちなみに、以下の方法ではエラーとなりました。 Controls("TextBox" & i).Text でTextの内容を取得しようとした よろしくお願いします。

  • VB2005でのコントロール配列?

    お世話になってます。 私はVB入門者です。 使用している用語などに間違いなどがありましたら ツッコんでやって下さい。 VB2005にて、フォーム内にcomboboxが10個あります。 Load時にT_boxの1~10に同じ、配列case_T を代入したいのですが 下記のコードをどのように直せばよいのでしょうか。 VB6まではコントロール配列?というものが、あったようですが 今回求めている処理はそのコントロール配列に該当するのでしょうか? -------------------------------- case_T内の値は 動的な値A,b,c,d,e,f,gがはいっていて それをT_boxの1~10に格納したいです -------------------------------- Dim T_box() As ComboBox = {T_box1, T_box2, T_box3, T_box4, T_box5, T_box6, T_box7, T_box8, T_box9, T_box10} Dim m As Short ReDim T_box(T_box.Length - 1) For n = 0 To T_box.Length - 1 T_box(cont + 1).Items.Clear() For m = 0 To case_T.Length - 1 T_box(cont + 1).Items.Add(case_T(cont)) cont += 1 Next Next T_box1.ResetText() cont = 0 End Sub

  • コントロール配列と同じような扱い方

    TextBox1、TextBox2、TextBox3・・・・TextBox10 と10個のテキストボックスにVB6で使っていたコントロール配列と同じような処理の仕方をコードで教えていただけませんか。 for i=0 to 9 TextBox(i).Text=i next i 上記のコードをVB.NETで書くとすれば、どのように書けばいいかということさえわかれば、なんとか頑張れる気がします。

  • VBのコントロール配列を二次元配列にする方法

    タイトル通りです。 テキストボックスなどをコントロール配列で持つときに二次元配列で持つ方法はないでしょうか? ご回答の方、宜しくお願いします。

  • .net 2010VB配列TextBox貼り付ける

    初めて質問致します。 よろしくお願い致します。 超初心者レベルです。 VB6の時に、Formにテキストボックスやラベルなどを1つ貼り付け、それをコピーすると「配列にするか?」と聞かれていました。 今、.net 2010 VB でテキストボックス(ラベル)をコピーしても、配列にするかどうか聞いてくれません。 プログラム等ではなく、手動でFormに貼り付け時に、配列にする方法を教えて下さい。 (どのプロパティが、配列のインデックスなのかが分かりません。) <(__)>

  • VB2005でのTabPageとコントロール配列について

    今テキストボックスをコントロール配列にするために動的に作成しまして、実行時にTabPage上に表示させたいのですが、どのようにすれば表示させる事ができるでしょうか?TabPage上ではなくフォーム上になら表示させることはできました。よろしくお願い致します。

  • コントロール配列(,net)

     VB.NET でコントロール配列が出来きません。 ヘルプによるとサポートはしていない~~~といろいろ書いていますがいまいち理解できません。 いったいどういうことなんでしょうか?

  • VBAでコントロール配列を持つことは可能ですか?

    Excel2002、OSはXPです。 VBではコントロールに配列を持つことが出来ましたが、 VBAでコントロール配列を持つことは可能でしょうか? やりたいことはユーザーフォームにラベルを100個ぐらい貼り付けて、 テキストボックス入力した値がCell(i,1)と等しければ、 i番目のラベルのCaptionに文字を入力したい。という感じです。 もしVBのようにコントロール配列を持てれば、 If TextBox1.text=Cells(i,1) Then Label(i).Caption="~~" という風に出来るのですが、どうも配列の設定がVBのようにできません。 プロパティにINDEXが無いですし、オブジェクト名を同じにしたら エラーとなってしまいますし。。 もし出来ないのであれば、何か回避策のようなものはないでしょうか? 力技で100個IFを書けば出来ることは出来るのですが・・ If TextBox1.text=Cells(i,1) Then If i = 1 Then Label1.Caption="~~" ElseIf i=2 then Label2.Caption="~~" ・・・・

  • VB6からの移行したいけど、VB.NETのコントロール配列は?

    VB6ではフォーム上にボタンコントロールとかを配列で作成できクリックされた時にはボタンイベントのインデックス値によってどのボタンを押されたが判断できて各処理を記述できていましたが、VB.NETでは同じようにはできないようです。オブジェクト指向的?にはこちらがいいのでしょうが、どうも面倒くさくなったなぁというイメージしかわかず、なぜこの方がいいのかという納得いく書籍とかも見つけることができていません。 どなたか、ご教授頂きたいのですがよろしくお願いします。参考になる書籍やWEBとかもありましたらお教えいただければ幸いです。

専門家に質問してみよう