掲示板お問い合わせランダムジャンプ

Top Index

2005年03月20日
動的なコントロール作成と、イベントとの関連付け
大量にコントロールを生成したい場合や、外部ファイルによるコントロール生成を行いたい場合、動的にコントロールを生成する必要があります。
また、実際に利用する場合、動的にイベントを関連付ける必要があります。

以下、ソースコードです。
注意点としては、「全く無の状態からはコントロールを作成することはできない」ため、あらかじめ、WithEventキーワードをつけてコントロールを宣言しておく必要があります。

01Public Class Form1
02    Inherits System.Windows.Forms.Form
03
04#Region " Windows フォーム デザイナで生成されたコード "
44
45    'あらかじめイベントが発生するように宣言しておく
46    Private WithEvents btn As Button
47
48    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
49        Me.SuspendLayout()
50
51        '動的にコントロールを配置する
52        For i As Integer = 0 To 3
53            btn = New Button
54            Me.Controls.Add(btn)
55            AddHandler btn.Click, AddressOf btn_Click   '動的にイベントを関連付ける
56            btn.Left = 10
57            btn.Top = btn.Height * i + 10
58        Next
59
60        Me.ResumeLayout()
61    End Sub
62
63    Private Sub btn_Click(ByVal sender As Object, ByVal e As System.EventArgs)
64        Dim b As Button = sender
65        MessageBox.Show(String.Format("Name {0}, Top {1}", b.Name, b.Top))
66    End Sub
67End Class
 powered by vb2html ver2.1b


補足
動的にコントロールを作成した場合、「Nameプロパティは空白」になるんですね。
てっきり、コンストラクタで指定するものかと思ってました。

追記 2005/03/21
アイテムをフォームに追加する方法を修。
追加するアイテムがコンテナ可能な場合、もうちょっと配慮が必要な気がしますが、そちらについては考慮されていません。
多分通常の利用程度であれば大丈夫のはず。
[ 投稿者:mk3008 at 17:27 | コントロールTips | コメント(0) | トラックバック(0) ]

この記事へのコメント

この記事へのトラックバック

この記事へのトラックバックURL
http://shinshu.fm/MHz/88.44/a03196/0000036987.trackback

この記事の固定URL
http://shinshu.fm/MHz/88.44/archives/0000036987.html

記事へのコメント
 
認証コード:
画像に表示されるコードを半角英数字で入力して下さい。画像が読み難い場合はこちら
簡単演算認証: 1 x 3 =
計算の答えを半角英数字で入力して下さい。
名前: [必須]
URL/Email:
タイトル:
コメント:
※記事・コメントなどの削除要請はこちら