Para os programadores que conhecem o VB6, as coleções de controle eram muito fáceis, bastava criar controles com o mesmo nome, mas com um índice diferente.
VB.Net e BG decidiram complicar a coisa, estas coleções não existem mais, pelo menos, tão fácil assim.
Por conseguinte, é necessário desenvolver truques para superar essa carência, mas não se preocupe, tudo é possível com o VB.Net.
Podemos considerar que todos os controles de uma forma já fazem parte de uma coleção... e, a partir daí, identificá-los!
Podemos rever todos os "controles" que constituem o design da forma,
A dificuldade é que cada controle tem suas próprias propriedades.
Essa primeira abordagem nos permitirá tratar das propriedades de vários controles de tipos diferentes, com algumas linhas de código em uma única "sub".
O código se divide em duas « subs » para uma melhor compreensão, mas poderia ser realizado em apenas uma.
Se você quiser, você pode liberar as duas linhas Img.image = ...
As imagens estão no zip.
'============================================================== 'Na forma, '4 TextBox propriedade Tag de 1 à 4 '6 PictureBox propriedade Tag de 1 à 6 '============================================================== Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load InitPic() InitText() End Sub Sub InitText() Dim Ctl As Control Dim Txt As TextBox Static NbAlea As Integer NbAlea += 1 : If NbAlea > 4 Then NbAlea = 1 For Each Ctl In Me.Controls 'loop sobre todos os controles da forma If TypeOf Ctl Is TextBox Then 'Verifique se é um textbox Txt = Ctl If Txt.Tag = NbAlea Then 'Se só tiver TextBox na forma, não á necessário 'passar por uma variável buffer Txt.Text = "é o TextBox : " & Txt.Name Txt.BackColor = Color.Fuchsia Else Txt.Text = "" Txt.BackColor = Color.Empty End If End If Next End Sub Sub InitPic() Dim Pic As Control Dim Img As PictureBox Static NbAlea As Integer NbAlea += 1 : If NbAlea > 6 Then NbAlea = 1 'Se só tiver pictureBox na forma, não é necessário 'passer por uma variável buffer For Each Pic In Me.Controls 'loop sobre todos os controles da forma If TypeOf Pic Is PictureBox Then Img = Pic If Pic.Tag = NbAlea Then Img.BackColor = Color.Aquamarine Img.BorderStyle = BorderStyle.Fixed3D 'Img.Image = System.Drawing.Bitmap.FromFile(My.Application.Info.DirectoryPath & "\bt" & NbAlea & ".bmp") 'Img.SizeMode = PictureBoxSizeMode.StretchImage Else Img.BackColor = Color.Chocolate Img.BorderStyle = BorderStyle.FixedSingle End If End If Next End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click InitText() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click InitPic() End Sub End Class
O projeto Zip
Não esqueça de descompactar o arquivo Zip.