- ベストアンサー
VB2005 ラベル(ボタン)をコントロール配列のようにしたい
VB2005を使用していますが、画面に貼り付けている同じ名前のラベルおよびボタンをコントロール配列のようにしたいのですが、方法が分かりません。VB6ではラベル(ボタン)のIndexに番号を付けていけばよかったのですが。どなたか知ってれば教えて頂きたいのですが。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
実は、コントロール配列はデザイン時には作成できませんが、動的に(プログラムから)作成することは可能です。 以下ご参考 ラベルですが Form_Loadなどで下記のようにすれば、配列にして作成することが可能です 'ラベルの配列を作成する Private MyLabels() As System.Windows.Forms.Label Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase,Load MyLabels = New System.Windows.Forms.Label(99) {} For I As Integer = 0 To MyLabels.Length - 1 'Nameプロパティの設定 MyLabels(I).Name = "Label" + I.ToString() 'Textプロパティの設定 MyLabels(I).Text = LoadResString(I) 'Labelサイズの設定 MyLabels(I).Size = New Size(20, 10) '配置場所の設定 MyLabels(i).Location = New Point(自分の配置したいX, 自分の配置したいY) Next '作成したコントロールをフォームに配置する Me.Controls.AddRange(MyLabels) End Sub
その他の回答 (1)
- HIROs-NET
- ベストアンサー率78% (15/19)
VB2005には(というより.NETからは)コントロール配列はなくなりました。 かわりにイベントを共通して使用することが可能です。 たとえば、フォーム上にButton1、Button2の2つに対して共通のクリックイベントを使用する場合は 1)2つのボタンを選択状態にする 2)プロパティウィンドウのところのカミナリマークボタンを押す 3)Clickイベントのところをダブルクリックする すると下記のようなコードが自動作成されると思います Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click End Sub Handlesの後ろにButton1.Click、Button2.Clickがありますが、主導で追加することも可能です。 で、どのボタンが押されたかを判断するには、引数のsenderを使用します。 senderはイベント発生元情報が入っていると考えればよいでしょう。 senderはオブジェクト方なのでDirectCastを使ってButton型に変換しNameプロパティを取得すれば、どのボタンが押されたか判断することが出来ます。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click MessageBox.Show(DirectCast(sender, Button).Name & "がクリックされました") End Sub
補足
HIROs-NET様、早速の回答ありがとうございます。これから試してみます。それとラベルの件ですが、VB6で作成中の時、Label(0)~Label(100)を作成し、For ~ Next 文で文字を代入していましたが、VB2005でも可能でしょうか? For i = 0 to 100 Label(i) = LoadResString(i) Next i すみませんが、こちらもご教授頂きたいのですが。 よろしくお願いします。
お礼
HIROs-NET様、早速の回答ありがとうございました。早速試したいと思います。本当にありがとうございました。