2014-02-26 63 views
0

我正在編寫一個程序,它從註冊表中獲取數據,然後將groupbox添加到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); 
} 

當按下一個按鈕,此功能被處理。之後,groupbox顯示正確,但只有第一個標籤(文本= 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再次幫忙! – SecThor

0

如果您的標籤尺寸不變,然後

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

會做的伎倆