开发者

looping through Page Controls - using same logic for multiple control types

开发者 https://www.devze.com 2022-12-27 15:00 出处:网络
I\'m looping through the page controls like so foreach (Control ctrl in control.Controls) { if (开发者_如何转开发ctrl is System.Web.UI.WebControls.TextBox || ctrl is System.Web.UI.WebControls.Label)

I'm looping through the page controls like so

      foreach (Control ctrl in control.Controls)
      {
          if (开发者_如何转开发ctrl is System.Web.UI.WebControls.TextBox || ctrl is System.Web.UI.WebControls.Label)
          {
          }
      }

I want to be able to declare a variable inside this if statements that is the same type as 'ctrl' in the foreach so that I can inspect the properties of the control and perform some manipulations that way. I don't want to duplicate code, for example, if 'ctrl' is a textbox, or label, because I would be executing the same code for those 2 web control types.

Any help leading me in the right direction is greatly appreciated!

Thanks


Try using the ITextControl interface:

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.
    }
}

You can also use the OfType extension method here to clean this up a bit:

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号