2016-04-27 141 views
1

我有多個單獨的複選框(50)。選中複選框的計數數量

這樣的:

<asp:CheckBox runat="server" ID="chkBirthDate" /> 

我需要知道用戶有多少複選框選中(計數)。如果他選擇超過3個,我會讓他通過,如果沒有,我會給他一個錯誤信息。

在此先感謝!

回答

4

LINQ方法

你可以通過使用OfType<T>()的方法來獲取您的所有個人CheckBox控件,然後使用一個Count()電話,看看有多少實際進行了檢查利用LINQ的查詢能力:

// Get the number of CheckBox Controls that are checked 
var checkedBoxes = Form.Controls.OfType<CheckBox>().Count(c => c.Checked); 
// Determine if your specific criteria is met 
if(checkedBoxes > 3) 
{ 
     // You shall pass! 
} 
else 
{ 
     // None shall pass 
} 

你需要確保你有LINQ的引用這個工作以及通過包括以下using語句:

using System.Linq; 

迭代環接方法

或者,可以簡單地循環通過並且相應地遞增計數經由foreach環如下所示:

// Store your count 
var checkedBoxes = 0; 
// Iterate through all of the Controls in your Form 
foreach(Control c in Form.Controls) 
{ 
    // If one of the Controls is a CheckBox and it is checked, then 
    // increment your count 
    if(c is CheckBox && (c as CheckBox).Checked) 
    { 
     checkedBoxes++; 
    } 
} 

實施例(帶輸出)

你可以找到a GitHub Gist that fully reproduces this here和演示如下:

enter image description here

+0

它不承認我的OfType。我需要使用一些嗎? –

+0

嘗試通過'using System.Linq;'添加對LINQ的引用。 –

+0

我需要替換一些東西嗎?因爲它不包括任何選中的複選框 –