VB.net - Substituir os índices de controle de uma forma

Introdução

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".

Preliminares

  • Abrir um novo projeto Windows Form
  • Colar 4 textBox e colocar suas propriedades Tag (marcação) em, respectivamente, 1, 2, 3 et 4
  • Colar 6 PictureBox e colocar suas propriedades Tag (marcação) em, respectivamente, 1, 2, ...6
  • Colar 2 Botões

O código

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

Download

O projeto Zip
Não esqueça de descompactar o arquivo Zip.

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Este documento, intitulado 'VB.net - Substituir os índices de controle de uma forma', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade