2017-11-03 4 views
0

Ich habe ein Programm, das einige Beschriftungen (10-50) anzeigen sollte. Ich möchte die Werte in einem Array speichern, um sie zu durchlaufen. Ich habe herausgefunden, wie man verschiedene Datentypen in einer ArrayList speichert. Ich habe eine Klasse hdinfoData und ich weise es einer Array-Liste zu. Ich dachte, ich habe so etwas wie ein 2D-Array mit verschiedenen Datentypen. Ich kann nicht auf die Werte in der Array-Liste zugreifen, da es nicht wirklich ein 2D-Array ist, es ist nur ein Array mit Objekten (hdinfoData-Klasse)C# Erstellen von Etiketten in Form dynamisch aus einer ArrayList mit Klasse

Was ist der richtige Weg dazu? Ich möchte Paare von Etiketten "Label" "Value" dynamisch erstellen. Außerdem möchte ich die Reihenfolge ändern.

ArrayList hdiData = new ArrayList(); 

hdinfoData a = new hdinfoData(); 
    a.ID = 1; 
    a.Label = "USER"; 
    a.Value = user; 
    a.PosX = 1; 
    a.PosY = 2; 

hdiData.Add(a); 

hdinfoData b = new hdinfoData(); 
    b.ID = 2; 
    b.Label = "HOST"; 
    b.Value = host; 
hdiData.Add(b); 


Label[] lbl = new Label[hdiData.Count]; 

int y = 50; 
for (int i = 0; i < hdiData.Count; i++) 
{ 
    int x = 15; 

    lbl[i] = new Label(); 
    lbl[i].Location = new System.Drawing.Point(x, y); 
    lbl[i].Text = (string)hdiData[i]; 
    lbl[i].ForeColor = Color.White; 

    Form1.Controls.Add(lbl[i]); 
    y += 25; 
}  

internal class hdinfoData 
{ 
public int ID { get; set; } 
public string Label { get; set; } 
public string Value { get; set; } 
public int PosX { get; set; } 
public int PosY { get; set; } 
} 
+1

Wenn ich Paare von T1 und T2 erstellen möchten, die ich normalerweise Wörterbuch verwenden https://msdn.microsoft.com/fr-fr/ Bibliothek/xfhwa508 (v = vs.110) .aspx Sie können die Elemente auch in einem Wörterbuch https://www.dotnetperls.com/sort-dictionary sortieren –

Antwort

1

Sie würden besser List<hdinfoData> anstelle von ArrayList. Dann greifen nur Felder seine Elemente wie alle anderen Objektfelder:

var hdiData = new List<hdinfoData>(); 
................. 
    lbl[i].Text = hdiData[i].Label; 
Verwandte Themen