2014-02-26 2 views
0

레지스트리에서 데이터를 가져온 다음 그룹 컨트롤을 tabcontrol에 추가하는 프로그램을 작성하고 groupbox에서 레지스트리 정보를 표시하기 위해 많은 레이블 컨트롤을 만들고 싶습니다. 내가 가진 많은 데이터 (키 - 값 쌍).컨트롤에 레이블 집합 채우기

private void AddAllControl() 
{ 
    GroupBox TestGroupBox = new GroupBox(); 
    TestGroupBox.AutoSize = true; 
    TestGroupBox.Text = "valami"; 
    TestGroupBox.Height = 500; 
    for (int i = 0; i < 21; i++) 
    { 
     Label TempLabel = new Label(); 
     TempLabel.Text = i.ToString(); 
     TempLabel.Location = new System.Drawing.Point(20 + i, 30); 
     TempLabel.Show(); 
     TempLabel.Visible = true; 
     TempLabel.Enabled = true; 
     TestGroupBox.Controls.Add(TempLabel);    
    } 
    tabPage_SandBox.Controls.Add(TestGroupBox); 
} 

버튼이 눌려진 경우에는이 기능이 처리된다 이렇게하려면 I이 함수를 만들었다. 그 후 그룹 상자가 올바르게 나타나지만 첫 번째 레이블 (텍스트 = 0)이 21 레이블 대신 표시됩니다. 프로그램을 디버깅하기 위해 멈추었을 때 모든 레이블이 존재하고 모든 속성이 올바른 것을 볼 수 있지만 나타나지는 않습니다. 내가 눈치 채지 못한 것이 있어야합니다. 그리고 지금 제 질문 은요? 내가 뭘 잘못 했니? 당신이 볼 수 있듯이 나는 visibleenabled 속성을 시도했지만 해결책을 찾지 못했습니다.

+0

가 이미 데이터를 표시하기 위해'ListView' 또는'DataGridView'를 사용하는 것을 고려 했 트릭을 할 것인가? 이것은 더 나은 해결책 일 수 있습니다. – user1567896

+0

컨트롤을 추가하기 전에이 속성을 설정하십시오. 'TempLabel.AutoSize = true;'. 이 레이블은 다른 레이블에 겹쳐져 있기 때문에 0 만 인쇄됩니다. – Shell

답변

0

당신은

TempLabel.AutoSize = true; 

을 설정해야합니다 그리고 당신은 조금

TempLabel.Location = new System.Drawing.Point(20 + 10 * i, 30); 

같은 위치를 수정해야하거나 당신이 레이블을 당신이 가지고 그래서 다른 아래 하나를 갖고 싶어 생각 위치를 다음과 같이 설정하십시오.

TempLabel.Location = new System.Drawing.Point(20, 20+20 * i); 
+0

이제 알겠습니다. Thx는 도움을 요청합니다. 레이블이 직사각형에 있다는 것을 잊었습니다. 모든 라벨이 정확히 같은 크기 였기 때문에 첫 번째 라벨 만 보았고 그 나머지는 라벨 바로 아래에있었습니다. 나는 어리 석다. Thx 다시 4 도움! – SecThor

0

레이블이 고정 크기이면

TestGroupBox.Controls.Add(new Label() 
{ 
    Text = i.ToString(), 
    Location = new Point(20 + (i*20), 30), 
    Size = new Size(20, 20) 
}); 

관련 문제