2013-02-21 170 views
9

如果這看起來很糟糕,我很抱歉,但我一直在搜索這幾天。我試圖動態添加複選框到Windows窗體;但是,只有一個複選框出現在窗體上。這裏是我的代碼:將複選框動態添加到Windows窗體僅顯示一個複選框

for (int i = 0; i < 10; i++) 
{ 
    box = new CheckBox(); 
    box.Tag = i.ToString(); 
    box.Text = "a"; 
    box.AutoSize = true; 
    box.Location = new Point(10, i + 10); 
    Main.Controls.Add(box); 
} 

正如你所看到的,我通過for循環添加了複選框。我曾嘗試搞亂地點,並啓用autosize以防萬一它們以某種方式重疊。結果是帶有文本「a」的單個複選框。

+4

試試我* 50,而不是1 + 10將僅由1個像素 – Benny 2013-02-21 15:00:24

回答

15

其實你已經創建了一個CheckBox但在同一點。

CheckBox box; 
for (int i = 0; i < 10; i++) 
{ 
    box = new CheckBox(); 
    box.Tag = i.ToString(); 
    box.Text = "a"; 
    box.AutoSize = true; 
    box.Location = new Point(10, i * 50); //vertical 
    //box.Location = new Point(i * 50, 10); //horizontal 
    this.Controls.Add(box); 
} 
+0

轉移每箱使注意OP,因爲與其他答案有些混淆......使用'box = new CheckBox();'在循環內部而不是'CheckBox box = new CheckBox();'同樣適用。 – NominSim 2013-02-21 15:07:13

+0

謝謝你的所有快速回復!問題是:複選框之間的垂直距離太小,複選框沒有在for循環中創建。 – cruskai239 2013-02-21 15:07:24

+0

@NominSim是的,我知道。這就是爲什麼我從我的答案中說。 – spajce 2013-02-21 15:08:28

0

在這種情況下有幫助的動態分配Name屬性如何才達到checkbox.checked財產,像提交按鈕其他一些行動。我怎麼能得到所有的複選框被選中,哪些是在循環中創建的?

0

如果從每一個按鈕的情況下,你可以用你的按鈕或您的活動,使像

CheckBox myCheckedBox = (CheckBox)sender;