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