Evez de usar 17 variables haz un array. Lo mismo sucede con los PictureBox, crear un array de controles.
Dim bX(17) as Integer
Pero ese Array conendrá 18 elementos, no 17, ya que en VB.NET los índices están basados en Cero.
Sería así:
Dim bX(16) as Integer
Poniendo PictureBox(i).Image = My.Resources.rojo me da ese fallo
Error 1 'PictureBox' es un tipo y no se puede usar como expresión.
El error se debe a que estás aplicando mal la solución que te proporcionó @
Fary.
PictureBox debe ser un array que contenga tus controles de tipo
PictureBox.
Imagino que al llamarse de la misma forma, eso te habrá llevado a la confusión.
Personálmente te sugiero utilizar un diccionario para poder relacionar cada control con su respectivo valor y así simplificar la tarea:
Dim pcbDict
As New Dictionary(Of PictureBox,
Integer) From
{ {Me.PictureBox1, 0},
{Me.PictureBox2, 1},
{Me.PictureBox3, 1},
{Me.PictureBox4, 0},
{etc...}}
For Each kv As KeyValuePair(Of PictureBox, Integer) In Me.pcbDict
If (kv.Value = 1) Then
kv.Key.Image = My.Resources.rojo
End If
Next
Si lo quieres simplificar todavía más, puedes utilizar la propiedad
PictureBox.Tag para asignar un valor Integer a cada PictureBox, y entonces solo tendrías que iterar la colección de controles:
For Each pcb As PictureBox In Me.Controls.OfType(Of PictureBox)
Dim value As Integer = CType(pcb.Tag, Integer)
If (value = 1) Then
pcb.Image = My.Resources.rojo
End If
Next pcb
Saludos.