2012-12-19 3 views
2

일부 데이터를 세로 정렬로 표시하려는 winforms 앱의 패널이 있습니다. XML 문서에서 해당 데이터를 가져옵니다. 나는 첫 번째 기록은 패널의 왼쪽 상단 모서리에 표시 볼 수 끝에패널에 라벨을 배치하는 방법

for (int i = 0; i < node.ChildNodes.Count; i++) 
{ 
    lbl = new Label(); 
    lbl.Text = node.ChildNodes[i].Name + " = " + node.ChildNodes[i].InnerText; 
    panel1.Controls.Add(lbl); 
} 

하지만 panel1.controls 통해 반복, 나는 카운트가 79입니다 볼 수 있습니다 : 나는 루프 같은 다음 XML을 통해거야 나는 그것들을 올바르게 배치하기 만하면됩니다.

다른 사람이 어떻게 도와 줄 수 있습니까?

+0

이것은 매우 낭비입니다. ListBox를 사용하십시오. –

답변

-1

레이블 객체의 위쪽 및/또는 왼쪽 속성을 설정하기 만하면됩니다.

for (int i = 0; i < node.ChildNodes.Count; i++) 
      { 

       lbl = new Label(); 
       lbl.Text = node.ChildNodes[i].Name + " = " + node.ChildNodes[i].InnerText; 
       lbl.top = 15 * i; 
       panel1.Controls.Add(lbl); 
} 
+0

수동으로 모든 위치를 설정하는 것은 큰 혼란이 될 것입니다. 이와 같은 컨트롤을 배치하기 위해 특별히 설계된 패널을 사용해야합니다. 작업량이 적게 들고 유지 관리가 쉬우 며 출력이 향상됩니다 (즉, 양식의 크기를 조정하거나 상단 라벨 바로 위에 다른 것을 추가하려는 경우). – Servy

+0

에 따라 다릅니다. 패널에 대한 답변을 보았지만이 패널에 더 많은 유연성이 있습니다. 같은 일을하는 여러 가지 방법! – malkassem

+0

때때로 각 컨트롤의 위치를 ​​구체적으로 설정하는 것이 적절할 수도있는 극단적 인 경우가있을 수 있지만, 일반적으로 역병처럼 피해야합니다. 폼의 아무 것도 제어 할 수있는 컨트롤이 없으며 잘 설계되고 유연한 응용 프로그램에서 절대 위치를 가져야합니다. 절대 위치 지정을 사용하면 크기를 조정할 수 없거나 이동 가능한 구성 요소 또는 동적 크기의 내용이없는 양식이 생성됩니다. 대부분의 응용 프로그램에서는 현실적이지 않습니다. 이러한 상황에서 절대 위치를 업데이트하는 것은 사실상 불가능합니다. – Servy

1
  • 대신 사용 FlowLayoutPanel.

  • FlowDirection 속성을 TopDown으로 설정하십시오.

+0

나는 그것을 시도했지만 한 행당 두 개의 레이블을 얻고 있는데, 한 행당 하나의 레이블을 원한다. 어떤 생각을 어떻게 고칠 수 있습니까? 감사합니다. – Laziale

+1

@Laziale 그런 다음 두 개의 열이있는'TableLayoutPanel'을 사용하십시오. 또한, 그것은 당신이 질문에 포함시켜야 할 종류입니다. – Servy

관련 문제