2016-04-28 11 views
2

Ich frage mich, ob mir bitte jemand mit folgendem helfen kann?Zugriff auf mehrere Steuerelemente über ein Array und nicht einzeln?

Ich habe 20 Etiketten auf meinem Formular, namens "Name1", "Name2" etc ..... Ich möchte von einem DB lesen und füllen Sie jedes Etikett mit dem entsprechenden Wert aus der DB-Zeile.

Im Moment ist der Code tut dies der lange Weg:

Name1.Text = dt.Rows(0).Item("Name1") 
Name2.Text = dt.Rows(0).Item("Name2") 
etc..... 

Ich möchte ein Array und eine Schleife verwenden, um den Code zu reduzieren, aber ich bin nicht sicher, was ich tun muss. Das unten funktioniert tadellos, abgesehen von Name1.Text ich will es wirklich sein Name (i) .text = ....... Es genügt zu sagen, dass das nicht funktioniert, also würde ich gerne wissen was ich falsch mache.

For i As Int16 = 1 To 20 
    Name1.Text = dt.Rows(0).Item("Name" & (i)) 
Next 

Danke,

+0

Mögliches Duplikat [Finden Steuerung mit Namen aus dem Windows Forms-Steuerelemente] (http://stackoverflow.com/questions/3898588/find-control-by-name-from-windows-forms-controls) –

+0

Sie könnten Datenbindungen verwenden – Plutonix

Antwort

0

Sie die Steuerelemente hinzufügen, könnten Sie in einem Array wollen (in der richtigen Reihenfolge). Verwenden Sie dann eine Schleife For oder For Each, um zu iterieren.

mit Ihrem Code sieht es so aus:

Dim textBoxes() As TextBox = {Name1, Name2, Name3, Name4, Name5, etc} 
For i As Int16 = 0 To textBoxes.Count -1 
    'According To Matt Wilko, it's better to start from 0 to textBoxes.Count-1, so you'll have to use i+1 
    textBoxes(i+1).Text = dt.Rows(0).Item("Name" & (i+1)) 
Next 

By the way, ich bin nicht sicher, dies ist der beste Weg:/

+3

Ihre Schleife muss von "0" zu "TextBoxes.Count" gehen - 1 " –

Verwandte Themen