博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Winform下根据控件名获得控件 C#

Posted on 2011-10-11 13:54  Honor  阅读(710)  评论(0)    收藏  举报

放法一:

Control[] objs = this.paneltxt.Controls.Find("tb2", true); //tb2是动态创建的文本控件
objs[0].Text = "aaaaaaaaaaaaaaaa";       //因为tb2文本控件名称唯一,第0个元素即是

放法二:

private void button2_Click(object sender, EventArgs e)
        {
            ListBox lb = (ListBox)this.ControlFromName("ListBox1");
            this.GetControls();
        }

private Control ControlFromName(string name)
        {
            object o = this.GetType().GetField(name, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase).GetValue(this);
            return ((Control)o);
        }
        private void GetControls()
        {
            System.Reflection.FieldInfo[] fis = this.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.IgnoreCase);
            foreach (System.Reflection.FieldInfo fi in fis)
            {
                if (fi.GetValue(this) is Control)          
                    MessageBox.Show(fi.Name);
            }
        }