Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
複数Controlの制御に関して
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9773#CommentId15684
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
YAS
 (社会人)
投稿日時
2010/8/27 12:09:43
LifeGameをつくるなら,今後PictureBoxの数を増やすことも考え,コードで配置した方がよいのでは
ないでしょうか。コードで配置するなら最初からコントロールの配列にしてしまえば取り扱いも簡単
です。
さらにクラスをPictureBoxを継承したものにすればLifeプロパティを作るだけですし,クリックイベント
なども最初からありますから後々楽になるのではないでしょうか。
下のサンプルはそれぞれのPictureBoxをクリックすると丸の色が変わるようになっています。
Public Class Form1
Dim Multi(99) As ExPictureBox
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For x As Integer = 0 To 9
For y As Integer = 0 To 9
Dim i As Integer = y * 10 + x
Multi(i) = New ExPictureBox
Multi(i).Location = New Point(x * 20, y * 20)
Multi(i).Life = 0
Next
Next
Me.Controls.AddRange(Multi)
End Sub
Private Class ExPictureBox
Inherits PictureBox
Dim _Life As Integer
Sub New()
Me.Size = New Size(20, 20)
Me.Image = New Bitmap(20, 20)
End Sub
Property Life As Integer
Get
Return Me._Life
End Get
Set(ByVal value As Integer)
Me._Life = value
Dim FillColor As Brush = Brushes.LightGreen
If value = 1 Then
FillColor = Brushes.Green
End If
Using g As Graphics = Graphics.FromImage(Me.Image)
g.FillEllipse(FillColor, g.VisibleClipBounds)
End Using
Me.Refresh()
End Set
End Property
Private Sub ExPictureBox_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
If Me.Life = 0 Then
Me.Life = 1
Else
Me.Life = 0
End If
End Sub
End Class
End Class