读书人

竟然可以这样访问私有控件解决方法

发布时间: 2012-01-08 22:48:50 作者: rapoo

竟然可以这样访问私有控件
建了一个用户控件,名称是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类的成员)没有访问限制

读书人网 >C#

热点推荐