2016-09-13 18 views
3

我想要計算當前在組框中選中的「選中框」的數量。我有10個複選框。計算當前選中框的數量並在c中輸出該數字

我一直在嘗試一些代碼,但我只設法向上計數,如果我檢查框但不是其他方式。所以它只是加起來(而不是每次+1)。

那麼我需要採取什麼方法來計算當前(不增加)的檢查框的數量?謝謝

int checkedBoxes = 0; 

private void checkBox1_Click(object sender, EventArgs e) 
{ 
    CheckBox check = (CheckBox)sender; 
    bool result = check.Checked; 

    if (result == true) 
    { 
     btnDone.Enabled = true; 
    } 

    foreach (Control c in grpToppings.Controls) 
    { 
     CheckBox cb = c as CheckBox; 
     if (cb != null && cb.Checked) 
     { 
      checkedBoxes += 1; 
      int how_many = checkedBoxes; 
     } 
    } 
} 

private void btnDone_Click(object sender, EventArgs e) 
{ 
    string name = textbox_orderName.Text; 
    MessageBox.Show("\nhow many: " + checkedBoxes, "It is done", 
    MessageBoxButtons.OK); 
} 
+1

請格式化您的代碼更易讀 - 目前這一切都在這個地方。如果在您的IDE(Visual Studio?)中這樣,您應該能夠讓IDE爲您進行格式化......然後複製/粘貼到堆棧溢出,選擇所有代碼並按下Ctrl-K。 –

+3

下一步:而不是在點擊方法計數,爲什麼不只是當「完成」按鈕被按下時計數?無需字段... –

+1

簡而言之:'int how_many = grpToppings.Controls.OfType ().Count(cb => cb.Checked);' –

回答

2

只是移動的checkedBoxes分配事件checkBox1_Click因爲你是遍歷所有的子控件一次計數應歸零。

int checkedBoxes; 

private void checkBox1_Click(object sender, EventArgs e) 
{ 
    checkedBoxes = 0; 
    CheckBox check = (CheckBox)sender; 
    bool result = check.Checked; 

    if (result == true) 
    { 
     btnDone.Enabled = true; 
    } 

    foreach (Control c in grpToppings.Controls) 
    { 
     CheckBox cb = c as CheckBox; 
     if (cb != null && cb.Checked) 
     { 
      checkedBoxes += 1; 
      int how_many = checkedBoxes; 
     } 
    } 
} 
+0

經驗教訓,感謝您的幫助 – lufee

相關問題