掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
コードからコントロールの生成 (ID:143013)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> コントロール、正確にはPictureBoxを16個作りたいのです。コードから > Dim PictureBox(15) As Label As Label では、16個の「ラベル」の器が作成されますよ。 Dim PictureBoxes(15) As PictureBox のように、「As PictureBox」にしておきましょう。 > 配列的に(?)コントロールを生成するときにはNewがなぜか使えません。 例えば、 Dim c(1) As Control c(0) = New TextBox() 'Control そのものではなく、その継承クラスをセット c(1) = PictureBox1 '他の場所で生成されたコントロールを代入 のような事があり得るため、それぞれの要素ごとに New する必要があります。 変数宣言と同時に New したいのであれば、 Private PictureBoxes() As PictureBox = {New PictureBox(), New PictureBox()} のように記述します。 > Private Sub 〜 の形に持っていくにはどうすればよいのでしょうか? どういう意味でしょうか? もし、イベントを受け取りたいという意味であれば、AddHandler を使えば OK です。 たとえば、こんな感じ。 Public Class Form1 Private PictureBoxes(2) As PictureBox Private Sub Form1_Load() Handles Me.Load BackgroundImage = Icon.ToBitmap() PictureBoxes(0) = New PictureBox() PictureBoxes(1) = New PictureBox() With {.Top = 100, .BackColor = Color.CornflowerBlue} PictureBoxes(2) = New PictureBox() With {.Left = 100, .BackColor = Color.Yellow} Controls.AddRange(PictureBoxes) AddHandler PictureBoxes(0).Click, Function() MsgBox("クリックされました") AddHandler PictureBoxes(1).DoubleClick, AddressOf Clicked AddHandler PictureBoxes(0).MouseMove, AddressOf Moving AddHandler PictureBoxes(1).MouseMove, AddressOf Moving AddHandler PictureBoxes(2).MouseMove, AddressOf Moving End Sub Private Sub Clicked() MsgBox("ダブルクリック!") End Sub Private Sub Moving(ByVal o As PictureBox, ByVal e As MouseEventArgs) Text = String.Format("{0}, {1}", o.Bounds, e.Location) End Sub End Class
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.