循环遍历页面控件 - 对多种控件类型使用相同的逻辑

时间:2010-04-15 20:19:14

标签: c# asp.net reflection web-controls

我正在遍历页面控件,如此

      foreach (Control ctrl in control.Controls)
      {
          if (ctrl is System.Web.UI.WebControls.TextBox || ctrl is System.Web.UI.WebControls.Label)
          {
          }
      }

我希望能够在foreach中声明一个与'ctrl'类型相同的if语句中的变量,这样我就可以检查控件的属性并以这种方式执行一些操作。我不想复制代码,例如,如果'ctrl'是文本框或标签,因为我将为这两种Web控件类型执行相同的代码。

非常感谢任何帮助我走向正确方向的帮助!

谢谢

1 个答案:

答案 0 :(得分:0)

尝试使用ITextControl界面:

foreach (Control ctrl in control.Controls)
{
    ITextControl text = ctrl as ITextControl;
    if (text != null)
    {
        // now you can use the "Text" property in here,
        // regardless of the type of the control.
    }
}

你也可以在这里使用OfType扩展方法来清理它:

foreach (ITextControl text in control.Controls.OfType<ITextControl>())
{
    // now you can use the "Text" property in here,
    // regardless of the type of the control.
}