2012-02-21 2 views
5

질문이 있습니다. Windows 폼에 컨트롤 배열을 동적으로 추가하려면 다음과 같은 코드를 준비해야하지만 질문은 폼의 첫 번째 컨트롤에만 표시됩니다 나머지는 컨트롤 컬렉션에 있지만 폼에는 표시되지 않습니다. 코드에서 누락 된 부분은 무엇입니까?winform에 동적으로 컨트롤 배열 추가

코드 :

LinkLabel[] arrLbl = new LinkLabel[5]; 

for (int i = 0; i < 5; i++) 
{ 
    LinkLabel lbl = new LinkLabel(); 
    lbl.Text = "Label: " + i.ToString(); 
    arrLbl[i] = lbl; 
} 

foreach (Control c in arrLbl) 
    this.Controls.Add(c); 

답변

15

코드는 올바른 것입니다. 문제는 당신이 추가하고있는 모든 컨트롤이 서로 겹치기 때문에 가장 위에있는 컨트롤 만 보게 될 가능성이 높습니다.

추가 할 컨테이너 컨트롤의 유형을 알 수는 없지만 자식 컨트롤을 자동으로 배열하는 FlowLayoutPanel에 컨테이너 컨트롤을 추가하는 것을 고려해보십시오.

FlowDirection property을 설정하여 하위 컨트롤을 세로 또는 가로로 "흐르게"할 것인지 여부를 선택할 수 있습니다.

FlowLayoutPanel (또는 다른 지능형 컨테이너 컨트롤)을 사용하지 않으려면 각 하위 컨트롤의 Location property을 수동으로 설정해야합니다.

1

각 컨트롤의 위치 속성을 설정해야합니다. 모두 서로 렌더링됩니다.

+0

다음과 같이해야합니까? lbl [index] .Location = new Point (x, y). 전에 그것을 시도했지만 나를 위해 일한 적이 없어! 이유는 무엇입니까? –

+0

이고 x와 y는 무엇입니까? – Beatles1692

+0

X는 정적이었고 y는 다음과 같이 루프를 통해 유추되었습니다. lbl.Location = new Point (0, counter + 10); –

관련 문제