【问题标题】:Find nested Control inside a user control在用户控件中查找嵌套控件
【发布时间】:2018-08-06 16:19:39
【问题描述】:

您好,我有一个 面板,其中包含一个 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;
                            }
                        }
                    }
                }
            }
        }

有没有更短/更好的方法来做到这一点?

【问题讨论】:

  • 为每个控件设置tag值。

标签: c# user-controls controls


【解决方案1】:

当然,有……

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 来缩短它。

【讨论】:

    猜你喜欢
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多