2005.04.08

VB.NET&Windows.Formの動的コントロールの作成とイベントハンドリング

Windows.Form上に動的にボタンコントロールを作成して、そのイベントをとるプログラムを
作る機会がありました。
静的に作成したコントロールについてはHandlesでイベントハンドラ
を記述できますが、動的に作成したコントロールの場合は
イベントをハンドリングするメソッドをコントロールに登録
する必要があります。
それにはAddHandlerAddressOf を使います
--------------


Private Sub MakeButton ()
'// ボタンを10個つくる
For i As Integer = 1 To 10
'// ボタンを作成
Dim btn As New Button
With btn
.Left = 11 * i
.Top = 10
.Width = 10
.Height = 10
.Text = i.ToString()
End With
'// イベントハンドラを登録
AddHandler btn.Click, AddressOf btn_Click
'// Formに出力
Me.Controls.Add(btn)
Next
End Sub

'// 動的ボタンのイベントハンドラ
Private Sub btn_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs)
'// 押されたボタンはsenderに渡されてきます
Dim btn As Button = CType(sender, Button)
System.Diagnostics.Debug.WriteLine(btn.Text & "が押されました")
End Sub

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
admin