0

我已经有一段时间没有编码了,所以我试图从动态添加的用户控件中获取属性。

我已经创建了这段代码,但想知道这是否是一种好方法,还是有另一种更好的方法来找出添加的用户控件?

if (PlaceHolder1.HasControls())
{
    foreach (Control uc in PlaceHolder1.Controls)
    {
        if (uc.GetType().Name.ToLower() == "spinner_ascx")
        {
            Label1.Text += ((Spinner)c).Name + "<br />";
        }
    }
}
4

1 回答 1

3

如果您已经知道控件的类型,则无需比较名称:

if (PlaceHolder1.HasControls())
{
    foreach (Control uc in PlaceHolder1.Controls)
    {
        if (uc is Spinner)
        {
            Label1.Text += ((Spinner)uc).Name + "<br />";
        }
    }
}

但是是的,如果你想访问Name并且 Name 只是Spinner类上的一个属性,你需要将它转换为适当的对象。

如果您创建了这些用户控件,一个好主意是确保它们都继承自基类,例如

public abstract class MyControl : UserControl {
   public string Name {get;set;}
}

public class Spinner : MyControl {

}

这样,您无需测试您想要的每个 UserControl,只需测试父类:

if(uc is MyControl) {
  Label1.Text += ((MyControl)uc).Name + "<br />";
}
于 2013-09-16T12:10:06.210 回答