您好我有面板,其中包含用户控件,其中包含转发器,可以有一个或多个复选框
我想获取当前位于面板中的所有复选框的状态。
我目前的代码是
bool isChecked = false;
foreach (Control control in pnlLoanProcess.Controls)
{
if (control is BookLoanActions)
{
BookLoanActions uc = (BookLoanActions)control;
foreach (Control c in uc.Controls)
{
if (c.GetType() == typeof(Repeater))
{
Repeater rptr = (Repeater)c;
foreach (Control c1 in rptr.Controls)
{
if (c1.GetType() == typeof(CheckBox))
{
CheckBox chkBox = (CheckBox)c1;
if (chkBox.Checked)
isChecked = true;
}
}
}
}
}
}
有更短/更好的方法吗?
答案 0 :(得分:0)
当然,有......
foreach (var bla in pnlLoanProcess.Controls.OfType<BookLoanActions>())
{
foreach (var rptr in bla.Controls.OfType<Repeater>())
{
isChecked = rtpr.Controls.OfType<CheckBox>().Any(c => c.IsChecked));
}
}
你甚至可以通过一些聪明的LINQ缩短它。