C# 如何按从上到下的设计顺序或设置顺序循环检查复选框

C# 如何按从上到下的设计顺序或设置顺序循环检查复选框,c#,C#,到目前为止,我有以下代码: foreach (Control child in TableNamePanel.Controls) { if (!(child is CheckBox)) continue; if ((child as CheckBox).Checked) { Code... } } 我的设计在每个复选框上都有复选框,而另一个复选框很重要。我想选中第一个复选框,然后选中下一个,依此类推。目前它是从底部开始的。有什么

到目前为止,我有以下代码:

foreach (Control child in TableNamePanel.Controls)
{
    if (!(child is CheckBox))
       continue;

    if ((child as CheckBox).Checked)
    {
        Code... 
    }
}

我的设计在每个复选框上都有
复选框,而另一个复选框很重要。我想选中第一个
复选框,然后选中下一个,依此类推。目前它是从底部开始的。有什么方法可以改变它,或者设置它在控制项中循环的顺序吗?

如下更改您的
foreach

foreach (Control child in TableNamePanel.Controls.Cast<Control>().OrderBy(c => c.TabIndex))
{
}
foreach(TableNamePanel.Controls.Cast().OrderBy(c=>c.TabIndex)中的控件子级)
{
}

这将根据表单中的
TabIndex
控件进行排序。您可能需要将
OrderBy
更改为
OrderByDescending

我认为当您循环时,它们是按照设计中的顺序排列的

但它们并不比您可以在复选框上设置
CheckBox.TabIndex
属性来对其进行排序的数量大

var orderedcheckbox= TableNamePanel.Controls.OfType<CheckBox>()
                                       .OrderBy(c => c.TabIndex);
var orderedcheckbox=TableNamePanel.Controls.OfType()
.OrderBy(c=>c.TabIndex);
在这里,我假设tabindex属性可用。据我所知,该属性在.net中可用


包括@dotNET评论中建议的其他解决方案


TabOrder控件在设计时的顺序,无论如何他都应该有。另一种方法是在上述代码中使用复选框的Location属性而不是TabOrder。

是windows窗体吗?控件的顺序与在designer.cs文件中添加的顺序相同。您可以使用LINQ
OrderBy
OrderByDescending
按特定属性对控件进行排序。旁注:有不需要安全施法。您可以直接播放
(复选框)子项
。因为if语句
!(child is CheckBox)
这是一个很好的解决方案,但可能OP已经在设计时设置了控件的
TabOrder
,他应该已经设置了。另一种方法是使用复选框的
Location
属性,而不是上面代码中的TabOrder。