
VB6からVB2008へ移行を検討しているものです。
そこで質問なんですが、VB2008でコントロールの反復処理はどう処理すればいいのでしょうか?
VB6の時はコントロール配列を使用して、ForNextで繰り返せばそれらしいことはできました。VB2008はコントロール配列がサポートされていないのでどうすればいいかわかりません。みなさんはどう反復処理を行っているのか教えていただきたいと思います。
具体的な処理として、テキストボックス1~10があり、そのテキストボックスの内容を1~10の順番で、テキストボックス11~20に格納する。以上、宜しくお願いします。
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
回答ありがとうございました。
VB6の時のコントロール配列と似たような記述方法ですね!
さっそくいろいろ試してみます。
ありがとうございました。
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
といった具合で配列に代入するとか ・・・
この回答への補足
回答ありがとうございました。
上記のコードの場合、フォームのコントロールを抽出し、その中のテキストボックスをtb()に格納するのは理解したんですが、テキストボックス1~10以外にもテキストボックスが存在した場合や、格納する順番も考慮したい場合はどうしたらいいのでしょうか?
テキスト1~10の順番で、テキストの内容を参照したいと思っています。
以上、宜しくお願いします。再度ご回答いただけたら嬉しいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- 事務・総務 4月に異動になり、かなり激務でした。希望した部署でしたが、そこまで激務とは知らず後悔しています。既に 2 2022/04/14 02:29
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- JavaScript 助けてください‼︎ javascriptで質問があります。 配列を定義して、 29342、45342 3 2022/06/26 22:06
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- その他(Microsoft Office) EXCELでバーコードを作成すると白くなってコードが見えません 1 2022/04/04 14:24
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba フィルター 複数条件 3つ以...
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
配列のペースト出力結果の書式...
-
複数のtextboxの処理を一括で行...
-
Dir関数で読み取り順を操作でき...
-
VB.NETの配列にExcelから読み込...
-
エクセルでXY座標に並べられた...
-
OutOfMemoryExceptionの回避策...
-
大量の変数を定義するにはどう...
-
VBAでMODE関数をつくる
-
構造体配列の特定のメンバーをF...
-
エクセル VBA 変数を一括で宣言...
-
VB.NETの配列の限界を教えてく...
-
COBOLの基本的な事なので...
-
エクセルの列一括書き込み
-
EXCELを使って、アクセスログを...
-
定数配列の書き方
-
配列をランダムに並び替えても...
-
VBScriptでCSVファイルを読み出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
配列のペースト出力結果の書式...
-
定数配列の書き方
-
大量の変数を定義するにはどう...
-
構造体配列の特定のメンバーをF...
-
Redim とEraseの違いは?
-
複数のtextboxの処理を一括で行...
-
VB.NETの配列にExcelから読み込...
-
COBOLの基本的な事なので...
-
Excel2010のinputboxで複数デー...
-
VBAでMODE関数をつくる
-
レコードセットの中身を配列に...
-
ReDim PreserveよりもReDimが遅い
-
EXCELを使って、アクセスログを...
-
配列の中の最大値とそのインデ...
-
VB6のメモリ解放に関して
おすすめ情報