c#checkboxes验证状态

时间:2012-02-23 10:32:50

标签: c# winforms

我是C#的新手,我正试图获得一个复选框的状态。我完成了:

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

                }
            }

ctr.Checked显然不起作用,当ctr是一个复选框时,如何验证ctr的状态?

4 个答案:

答案 0 :(得分:4)

一旦您确认它是一个复选框,您就可以转换为正确的类型,并阅读Checked属性:

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

            }
        }

答案 1 :(得分: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();

答案 2 :(得分:2)

您必须先将其强制转换为复选框。

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

答案 3 :(得分:1)

您的复选框有一个ID,例如checkBox1。您可以使用该ID直接访问复选框控件。

if (checkBox1.Checked) {
    ...
}