2017-11-03 1 views
0

일부 레이블 (10-50)을 표시해야하는 programm가 있습니다. 배열을 반복 할 때 값을 저장하고 싶습니다. 다른 데이터 유형을 ArrayList에 저장하는 방법을 알아 냈습니다. 클래스 hdinfoData가 있고 그것을 배열 목록에 할당합니다. 저는 다른 데이터 유형을 가진 2D 배열과 같은 것을 가지고 있다고 생각했습니다. 배열 목록에 저장된 값에 액세스 할 수 없습니다. 실제로는 2D 배열이 아니므로 객체 (hdinfoData 클래스)가 포함 된 배열 일뿐입니다.C# 클래스를 포함하는 ArrayList에서 동적으로 Form에 레이블을 생성

올바른 방법은 무엇입니까? 레이블 "레이블" "값"의 쌍을 동적으로 만들고 싶습니다. 또한 주문을 변경하고 싶습니다.

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; 
관련 문제