グループボックス配列内のテキストボックス配列にアクセスする方法

解決


himizu  2012-02-16 22:19:40  No: 103225

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

グループボックス配列内のテキストボックス配列にアクセスする方法をご教示いただけませんでしょうか。


魔界の仮面弁士  2012-02-16 23:11:27  No: 103226

> 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に設定していた場合のみ利用可能


魔界の仮面弁士  2012-02-16 23:14:02  No: 103227

それと、ここは VB2〜VB6専用の掲示板となっています。
VB.NET に関する話題は隣の掲示板でお願いします。


himizu  2012-02-16 23:56:20  No: 103228

>魔界の仮面弁士

ご指摘有難うございました。
vb.net質問掲示板へ移管いたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加