在用户控件中查找嵌套控件
Find nested Control inside a user control
您好,我有一个 面板 ,其中包含一个 usercontrol,其中包含一个 repeater有一个或多个复选框。
我想获取面板中当前所有复选框的状态。
我当前的密码是
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;
}
}
}
}
}
}
有shorter/better方法吗?
当然有...
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 来缩短它。
您好,我有一个 面板 ,其中包含一个 usercontrol,其中包含一个 repeater有一个或多个复选框。
我想获取面板中当前所有复选框的状态。
我当前的密码是
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;
}
}
}
}
}
}
有shorter/better方法吗?
当然有...
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 来缩短它。