2012-04-09 4 views
1

Ich möchte eine bestimmte Anzahl von Etiketten aufdecken und dann auffüllen können. Der ineffiziente Weg wäre, CASE auf die Anzahl der benötigten Etiketten zu setzen und diese dann wiederum zu füllen. Ich suche nach etwas in der Art:Wie kann ich eine Schleife erstellen, die eine bestimmte Anzahl von Etiketten anzeigt?

For i = 1 to RequiredNumOfLabels 
    Label & i.visible = true 
    Label & i.text = DataTable.Rows(i).Item(2) 
Next 

Vielen Dank.

EDIT:

For i = 1 To NumberOfItems 
     Dim lbl = Controls("lbl" & i) 
     lbl.Visible = True 
     lbl.Text = CStr(DataTable.Rows(i).Item(2)) 
    Next 

Ich denke, die Linie

Dim lbl = Controls("lbl" & i) 

ist das Problem, wie nach der Zeile ausgeführt wird, LBL noch nichts entspricht.

Die Begründung dahinter ist, dass ich versuchte, einen Rechnungsgenerator in vb.net zu erstellen, und ich hoffte, dass dies eine einfache Möglichkeit wäre - zählen Sie die Menge der Elemente in der Reihenfolge, füllen Sie die Etiketten mit Die Namen der Artikel zeigen, dass viele Etiketten.

Antwort

2

vereinfachen Wenn Ihr Label-Steuerelemente wirklich um so sind, können Sie versuchen, sie einfach aus einer Liste verweisen:

Dim myLabels As New List(Of Label) 
myLabels.Add(Label1) 
myLabels.Add(Label2) 

Dann sie nur aktualisieren:

For i as Integer = 1 to myLabels.Count 
    myLabels(i - 1).Visible = True 
    myLabels(i - 1).Text = DataTable.Rows(i).Item(2).ToString 
Next 
1

Sie Kontrollen namentlich durch die Formen Controls Eigenschaft

For i = 1 To RequiredNumOfLabels 
    Dim lbl = TryCast(Controls("Label" & i), Label) 
    If lbl IsNot Nothing Then 
     lbl.Visible = True 
     lbl.Text = CStr(DataTable.Rows(i).Item(2)) 
    End If 
Next 

Da Sie ein Objekt vom Typ erhalten Control, müssen Sie es zu Label werfen bekommen.


UPDATE

Es scheint, dass Sie nur Eigenschaften verwenden, die ohnehin in Control definiert sind. Therfore können Sie den Code zu

For i = 1 To RequiredNumOfLabels 
    Dim lbl = Controls("Label" & i) 
    lbl.Visible = True 
    lbl.Text = CStr(DataTable.Rows(i).Item(2)) 
Next 
+0

Ich habe das versucht, aber wann immer ich es benutze, ist lbl immer nichts - warum ist das? – Paul

+0

Sind Sie wirklich Etiketten vom Typ 'Label'? oder hast du 'TextBoxes' benutzt? Da alle Steuerelemente eine 'Visible'- und eine' Text'-Eigenschaft haben, könnten Sie auch einfach mit Steuerelementen arbeiten. –

+0

Bitte beachten Sie mein Update. –

Verwandte Themen