- ベストアンサー
コントロールに連続して名前をつけたいのですが
いつもお世話になっております。 VB入門者です。 VB2005なのですが、 たとえばtextboxにtextbox1~txtbox30と名前をつけたいときに、 一つ一つ名前を変えていく以外に簡単に出来る方法は ないのでしょうか。 教えてください。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
結局1つづつになるんですが、ControlsとしてNameをStringで設定していきます Buttonを1個と何個かのTextBoxがあるとします "TextBox何とか"を"MyTXT何とか"に変更します Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim MyControls For Each MyControls In Me.Controls If MyControls.name Like "TextBox*" Then MyControls.name = Replace(MyControls.name, "TextBox", "MyTXT") End If Next MyControls Me.Controls("MyTXT1").Text = "aaa" End Sub Forを工夫すれば、カウンターでループさせて設定する事も出来るでしょうし 『*』の所にカウンターを入れれば、"TextBox1"を"MyTXT1")に確実に変える事も出来るでしょう Me.TextBox1の代わりに使うためには、MyTXT1をObject宣言し、Nameの代わりに Set MyTXT1 = MyControls のように、セットしていきます。 つまり使う分だけ「MyTXT何とか」を宣言しておく必要があるので、あんまり手順の短縮にならないんです^^; また、実行時に変更できるプロパティではありませんので、宣言以外の方法は、フォームへの配置時に変更する方法でしょう(つまり一括ぢゃない) あとは、元から"MyTXT"となっているコントロールを自作することになりますが『デザイン時の Windows フォーム コントロールの開発』をヘルプで見てみて下さい ここだけで説明しきれるものでないのです… そんな難しく無いんですけどね メリットも多いし、この際使い方を覚えるのも手だとは思いますが、質問から離れすぎるのこのへんで^^;
その他の回答 (1)
一番簡単な方法は、TextBoxを一個貼り付けて(名前はTextBox1になります)、それを手動で29回コピーする事です。自動で連番になります。 もう一つは、プログラムで Loop を30回まわして、TextBox を30個 Load し、それぞれの名前に Loop Counter の数字を付与する事です。 以上二つは、今も昔も変わりませんが、もし30個の TextBox に関する共通 Event の話なら、もう少し状況を明確にして、再度ご質問下さい。
お礼
ありがとうございました。