Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#复选框验证状态_C#_Winforms - Fatal编程技术网

c#复选框验证状态

c#复选框验证状态,c#,winforms,C#,Winforms,我是C#的新手,我正在尝试获取复选框的状态。我做过: foreach (Control ctr in newProject.Controls) { if (ctr is CheckBox && ctr.Name.Contains("engine")) { } } ctr.Checked显然不起作用,当ctr是一个复选框时,我如何验证ctr的状态?一旦您验证它是一个复选框,您可以转换为正确的

我是C#的新手,我正在尝试获取复选框的状态。我做过:

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

                }
            }

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

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

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

            }
        }

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

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

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

if (checkBox1.Checked) {
    ...
}
var复选框=newProject.Controls
第()类
.Where(x=>x.Name.Contains(“引擎”))
.ToList();
foreach(复选框中的var cb)
{
如果(cb.选中)
//剩下的代码。。。
}
如果您只对选中的项目感兴趣,请使用:

var checkBoxes = newProject.Controls
    .OfType<CheckBox>()
    .Where(x => x.Name.Contains("engine") && x.Checked)
    .ToList();
var复选框=newProject.Controls
第()类
其中(x=>x.Name.Contains(“引擎”)&&x.Checked)
.ToList();

这似乎是最好的答案!was循环槽控件,带有许多复选框,分别验证每个复选框不是问题的目的LINQ是所有问题的答案!:-)强制转换
((复选框)cb)
不是多余的吗?是的,在您像上面那样执行
.OfType()
的情况下,不需要执行强制。所以我要把它拿出来,谢谢!
var checkBoxes = newProject.Controls
    .OfType<CheckBox>()
    .Where(x => x.Name.Contains("engine") && x.Checked)
    .ToList();