2012-02-23 56 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