竟然可以这样访问私有控件
建了一个用户控件,名称是UserControl1,上面放一个button,默认的名字是button1,可访问性是privite。
另建一个form窗体,上面放一个Panel,默认名称是panel1,在panel1中加载一个UserControl1实例,竟然可以通过下面的方法对私有控件button1的属性赋值。
private void Form1_Load(object sender, EventArgs e)
{
UserControl1 uc1 = new UserControl1();
panel1.Controls.Add(uc1);
GetFPTitle(this.Controls);
}
public static void GetFPTitle(Control.ControlCollection cc)
{
foreach (Control ct in cc)
{
if (ct is GroupBox)
{
GroupBox gb = (GroupBox)ct;
GetFPTitle(gb.Controls);
}
if (ct is Panel)
{
Panel p = (Panel)ct;
GetFPTitle(p.Controls);
}
if (ct is UserControl)
{
UserControl uc = (UserControl)ct;
GetFPTitle(uc.Controls);
}
switch (ct.Name)
{
case "button1 ":
ct.Text = "按钮! ";
break;
default:
break;
}
}
}
欢迎解释一下原因。
谢谢!
不信你试试。
[解决办法]
遍历了所有的控件以及子控件(递归)``根据控件名称得到控件实体``然后赋值``
不好意思``之前你开过贴``不过我一直没看懂``
[解决办法]
很正常的,因为控件集合是公开的,就算Button1是私有,但它在一个集合的中,也可以把它的属性改掉。
[解决办法]
其实,button1可访问性是privite, 是对其它类而言的
对UserControl1类(Button1应该是UserControl1类的成员)没有访问限制