vb.netにて以下コントロール配列にアクセスしたいのですが
うまくいきません。
フォームは以下構成になっております。
フォームに4つのグループボックスを配置し
各グループボックスの中にテキストボックスを2つ配置してます。
Form1
GroupBox1−TextBoxa1,TextBoxb1
GroupBox2−TextBoxa2,TextBoxb2
GroupBox3−TextBoxa3,TextBoxb3
GroupBox4−TextBoxa4,TextBoxb4
以下処理にて、実行すると
「オブジェクト参照がオブジェクトインスタンスに設定されていません」とエラーが出てしまいます。
for i = 1 to 4
Dim gbaCtl As Control = CType(Me.Controls("GroupBox" & i.ToString), GroupBox)
Dim gbbCtl As Control = CType(Me.Controls("GroupBox" & i.ToString), GroupBox)
Dim tbaCtl As Control = CType(gbaCtl.Controls("TextBoxa" & i.ToString), TextBox)
Dim tbbCtl As Control = CType(gbbCtl.Controls("TextBoxb" & i.ToString), TextBox)
tbaCtl.Text = aaaa
tbbCtl.Text = bbbb
next
グループボックス配列内のテキストボックス配列にアクセスする方法をご教示いただけませんでしょうか。
> vb.netにて以下コントロール配列にアクセスしたいのですが
VB.NETで「コントロール配列」というと、互換ライブラリの
Microsoft.VisualBasic.Compatibility.VB6.TextBoxArray クラスなどを
指すことになりますが……本当にコントロール配列をお使いですか?
> Form1
> GroupBox1−TextBoxa1,TextBoxb1
> GroupBox2−TextBoxa2,TextBoxb2
> GroupBox3−TextBoxa3,TextBoxb3
> GroupBox4−TextBoxa4,TextBoxb4
それぞれのコンテナに注意してください。
TextBoxa1 や TextBoxb1 は、Form1 ではなく GroupBox1 に属します。
× Me.Controls("TextBoxa1")
〇 Me.TextBoxa1
〇 Me.GroupBox1.Controls("TextBoxa1")
〇 Me.GroupBox1.Controls.Item("TextBoxa1")
〇 Me.GroupBox1.Controls!TextBoxa1
〇 Me.Controls("GroupBox1").Controls("TextBoxa1")
× Me.Controls.Find("TextBoxa1", False)(0)
△ Me.Controls.Find("TextBoxa1", True)(0) '古いバージョンでは使えない
△ CallByName(Me, "TextBoxa1", CallType.Get) 'デザイン時にTextBoxa1のModifiersをPublicに設定していた場合のみ利用可能
それと、ここは VB2〜VB6専用の掲示板となっています。
VB.NET に関する話題は隣の掲示板でお願いします。
>魔界の仮面弁士
ご指摘有難うございました。
vb.net質問掲示板へ移管いたします。