投稿者 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