Collections eller objektmängder

Dynamisk matris Skapa egen Sub-procedur

Alla objekten på ett formulär är en mängd av objekt, Controls Collection. Man kan också skapa egna Collections. När ett objekt läggs ut på formuläret, hamnar det automatiskt i en Controls Collection där det kan nås med ett index.

Det objektet som sist lades ut får index 0. Objekten får med andra ord index i omvänd ordning mot hur de läggs ut i formuläret. Lägg följande kod i en form med några TextBoxar:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim kontrollnummer As Control
Dim i As Integer
For Each kontrollnummer In Controls
   kontrollnummer.Text = i
   i += 1
Next kontrollnummer
End Sub

Först dimensioneras en variabel som Control. I stället för en For Next-slinga kan vi när vi jobbar med Collections använda en For Each - Next-slinga. Variabeln kontrollnummer representerar nu varje objekt på formuläret.

I det här fallet motsvarar kontrollnummer.Text alla TextBoxars egenskap Text. När programmet startas skrivs i varje TextBox det tal som motsvarar TextBoxens index. Detta är ett sätt att manipulera alla objekten när programmet körs.

Hur gör man för att välja ut ett av objekten i mängden? Jo, med en If-sats kan man kolla till exempel namnet på objektet. Vi lägger in If-satsen i ovanstående For Each-slinga:

If kontrollnummer.Name = "TextBox2" Then
   kontrollnummer.Text = "Hej"
End If

Om det finns flera olika objekt på formuläret och man bara vill jobba med till exempel TextBoxarna, kan man välja ut dem med TypeOf. Lägg ut ytterligare några objekt på formuläret och skriv följande i en knapp:

Dim Kontroller As Control
For Each Kontroller In Controls
   If TypeOf Kontroller Is TextBox Then
      Kontroller.BackColor = Color.Red
   End If
Next Kontroller

Dynamisk matris Skapa egen Sub-procedur

SupportData.Net
©