首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-01-08 
竟然可以这样访问私有控件建了一个用户控件,名称是UserControl1,上面放一个button,默认的名字是button1,可

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

热点排行