- ベストアンサー
.net 2010VB配列TextBox貼り付ける
初めて質問致します。 よろしくお願い致します。 超初心者レベルです。 VB6の時に、Formにテキストボックスやラベルなどを1つ貼り付け、それをコピーすると「配列にするか?」と聞かれていました。 今、.net 2010 VB でテキストボックス(ラベル)をコピーしても、配列にするかどうか聞いてくれません。 プログラム等ではなく、手動でFormに貼り付け時に、配列にする方法を教えて下さい。 (どのプロパティが、配列のインデックスなのかが分かりません。) <(__)>
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >私が配列にこだわるのは、下記のようなことをしたいからです。 >For inti = Text1.LBound To Text1.ubound >Text1(inti).Text = "TEXT" & CStr(inti) >Next inti こんな感じかな。 '配列を定義する Private Text1 as TextBox() Form_Loadイベントに ' 新しいインスタンスを生成する Me.Text1 = New TextBox() {Me.TextBox1,Me.TextBox2,Me.TextBox3,Me.TextBox4....} '←配列に使用する順に追加 For inti as Integer = LBound(Text1) to UBOund(Text1) Text1(inti).Text = "TEXT" & CStr(inti) Next
その他の回答 (2)
- angel_Z
- ベストアンサー率66% (12/18)
こんにちは。 vb6の様に使いたいのであれば、 Microsoft.VisualBasic.Compatibility アセンブリを参照設定に加えておいてください。 ツールボックスにて、すべてのWindowsフォーム→右クリック→アイテムの選択→.NETFrameworkコンポーネント内のLabelArrayにチェックを入れてOK。 すべてのWindowsフォームの最終尾にLabelArrayが追加されます。 フォームにドラッグすると、デザイン下にコントロール名:LabelArray1が追加されます。 ツールボックスから、Labelをドラッグします。(コントロール名:Label1) コントロール名を_LabelArray1_0に変更します。(コントロール名は何でもいいですが。) ここからは、フォームのデザイナに追加していきます。 _LabelArray1_0にインデックスを付けます。 '_LabelArray1_0 ' Me._LabelArray1_0.AutoSize = True Me._LabelArray1_0.Location = New System.Drawing.Point(58, 228) Me._LabelArray1_0.Name = "_LabelArray1_0" Me._LabelArray1_0.Size = New System.Drawing.Size(80, 12) Me._LabelArray1_0.TabIndex = 1 Me._LabelArray1_0.Text = "_LabelArray1_0" Me.LabelArray1.SetIndex(Me._LabelArray1_0, CType(0, Short)) ←ここに追加 が書かれているところに追加します。 フォームのデザインに戻ります。 フォームのLoadに下記記載してLoadしてみます。 ラベルの表示がaaとなればOKです。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load LabelArray1(0).Text = "aa" End Sub 2個目以降追加する場合は、コントロールを張り付けた後にコントロール名を_LabelArray1_1 にして同じくデザイナに、 '_LabelArray1_1 Me.LabelArray1.SetIndex(Me._LabelArray1_1, CType(1, Short)) 'LabelArray1_2 Me.LabelArray1.SetIndex(Me._LabelArray1_2, CType(2, Short)) の様にSetIndexを手動で追加していく必要がありますので、 数が多いと大変ですが。。。
補足
ご回答ありがとうございます。 .net VBでの配列は、無理やり設定するようなものなのですね。 私が配列にこだわるのは、下記のようなことをしたいからです。 .netでは、どのように実現させるのが一般的でしょうか? 重ね重ねよろしくお願い致します。 For inti = Text1.LBound To Text1.ubound Text1(inti).Text = "TEXT" & CStr(inti) Next inti
- Yune-Kichi
- ベストアンサー率74% (465/626)
コントロール配列の機能は.NET Frameworkには存在しません。 というか,Nameプロパティの値はシステムが直接使う物ではなくなっています。 配列であることに依存しない作りにするか,自分でコントロールの配列を作ってしまうか,です。
補足
ご回答ありがとうございます。 angel_Z さんの補足にも書きましたが、私がやりたいのは次のようなことです。 For inti = Text1.LBound To Text1.ubound Text1(inti).Text = "TEXT" & CStr(inti) Next inti 「配列であることに依存しない作りにするか」というのは、次のようなことなのでしょうか? Text1.Text ="TEXT1" Text2.Text ="TEXT2" Text3.Text ="TEXT3"
お礼
できそうな感じになってきました。 本当にありがとうございます。