Public Class frmRaceEm Inherits System.Windows.Forms.Form Dim racers(3) As Object ' <--- GLOBAL ARRAY of OBJECTs... Private Sub frmRaceEm_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load racers(0) = PictureBox1 racers(1) = PictureBox2 racers(2) = PictureBox3 End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer For i = 0 To 2 racers(i).top = racers(i).top + i * 10 + 10 ' this race ' is fixed! :-) Next i ' WHY??? End Sub End Class ------------------------------------------------------------------------------ The following is another example, completely separate from frmRaceEm above. ------------------------------------------------------------------------------ Public Class Form2 Inherits System.Windows.Forms.Form Dim p(3) As Object ' <-- Global array of objects, again. Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Timer1.Enabled = Not Timer1.Enabled End Sub Function randomColor() As Color <----- Study this FUNCTION Dim red, green, blue As Integer red = Int(Rnd() * 256) green = Int(Rnd() * 256) blue = Int(Rnd() * 256) randomColor = Color.FromArgb(red, green, blue) End Function Private Sub Timer1_Tick(ByVal sdr As Object, ByVal e As System.EventArgs) _ Handles Timer1.Tick Dim i, randomChoice As Integer For i = 0 To 2 randomChoice = Int(Rnd() * ImageList1.Images.Count) p(i).Image = ImageList1.Images(randomChoice) If chkColorChanges.Checked Then p(i).BackColor = randomColor() End If Next End Sub Private Sub Form2_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Load p(0) = PictureBox1 p(1) = PictureBox2 p(2) = PictureBox3 End Sub Private Sub chkColorChanges_CheckedChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles chkColorChanges.CheckedChanged Dim i As Integer If Not chkColorChanges.Checked Then For i = 0 To 2 p(i).Backcolor = Me.BackColor Next End If End Sub End Class