2012-02-23 47 views
-1

我是C#的新手,我試圖獲取複選框的狀態。 I`ve完成:c#複選框驗證狀態

foreach (Control ctr in newProject.Controls) { 
       if (ctr is CheckBox && ctr.Name.Contains("engine")) { 

       } 
      } 

ctr.Checked明顯`噸的工作,我怎麼能確認CTR的狀態時,CTR是一個複選框?

回答

4

一旦你驗證,這是一個複選框,就可以轉換爲正確的類型,並閱讀Checked屬性:

foreach (Control ctr in newProject.Controls) { 
      if (ctr is CheckBox && ctr.Name.Contains("engine") 
        && ((CheckBox)ctr).Checked) { 

      } 
     } 
2

你必須先將其轉換爲一個複選框。

CheckBox chk = (CheckBox)ctr; 
// Now you can do this: chk.Checked 
1

您的複選框有一個ID,如checkBox1。您可以直接使用該ID訪問複選框控件。

if (checkBox1.Checked) { 
    ... 
} 
+0

這似乎是最好的答案! – trampi 2012-02-23 10:38:10

+0

是循環槽控制,有很多複選框,單獨驗證每個複選框不是問題的目的 – 2012-03-15 13:37:59

3
var checkBoxes = newProject.Controls 
    .OfType<CheckBox>() 
    .Where(x => x.Name.Contains("engine")) 
    .ToList(); 

foreach(var cb in checkBoxes) 
{ 
    if (cb.Checked) 
     // rest of your code... 
} 

如果你只在檢查者感興趣的話,請使用:

var checkBoxes = newProject.Controls 
    .OfType<CheckBox>() 
    .Where(x => x.Name.Contains("engine") && x.Checked) 
    .ToList(); 
+0

你愛linq,不是嗎? ;) – trampi 2012-02-23 10:37:36

+1

LINQ是一切的答案! :-) – 2012-02-23 10:41:40

+0

不是cast'((CheckBox)cb)'多餘的? – clearpath 2012-02-23 10:50:21