プロが教える店舗&オフィスのセキュリティ対策術

VB2005を使用していますが、画面に貼り付けている同じ名前のラベルおよびボタンをコントロール配列のようにしたいのですが、方法が分かりません。VB6ではラベル(ボタン)のIndexに番号を付けていけばよかったのですが。どなたか知ってれば教えて頂きたいのですが。
よろしくお願いします。

A 回答 (2件)

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
すみませんが、こちらもご教授頂きたいのですが。
よろしくお願いします。

補足日時:2008/02/05 10:55
    • good
    • 0

実は、コントロール配列はデザイン時には作成できませんが、動的に(プログラムから)作成することは可能です。



以下ご参考

ラベルですが 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
    • good
    • 0
この回答へのお礼

HIROs-NET様、早速の回答ありがとうございました。早速試したいと思います。本当にありがとうございました。

お礼日時:2008/02/05 13:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!