2017-11-03 3 views
0

私はいくつかのラベル(10-50)を表示する必要があるプログラムを持っています。 私はそれを反復するために、配列に値を格納したいと思います。 ArrayListに異なるデータ型を格納する方法を知りました。 私はクラスhdinfoDataを持っており、それを配列リストに割り当てます。 私は、異なるデータ型を持つ2次元配列のようなものがあると思いました。 実際には2次元配列ではないので、配列リストに格納された値にアクセスすることはできません。オブジェクトを含む配列(hdinfoDataクラス)クラスを含むArrayListから動的にフォームにラベルを作成する

これには正しい方法はありますか? "ラベル" "値"というラベルのペアを動的に作成したいと思います。 さらに、注文を変更したいと思います。

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

私はT1とT2のペアを作成したい場合は、私は通常、辞書を使う https://msdn.microsoft.com/fr-fr/ library/xfhwa508(v = vs.110).aspx 辞書内の項目を並べ替えることもできます。https://www.dotnetperls.com/sort-dictionary –

答えて

1

あなたはより良いList<hdinfoData>の代わりArrayListを使用すると思います。それからちょうど他のオブジェクトのフィールドとしてその要素のフィールドにアクセス:

var hdiData = new List<hdinfoData>(); 
................. 
    lbl[i].Text = hdiData[i].Label; 
関連する問題