Winform遍历窗口的所有控件并改变标题

使用反射(Reflection)

private void GetControls2(Control fatherControl)
{
    //反射
    System.Reflection.FieldInfo[] fieldInfo = this.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
    for (int i = 0; i < fieldInfo.Length; i++)
    {
        listBox1.Items.Add(fieldInfo[i].Name);
    }
}

 

实战 2020-07-02 

 /// <summary>
        ///   遍历窗口的所有控件并改变标题,调用 GetControlsProperty(null)
        /// </summary>
        /// <param name="fatherControl"></param>
        public void GetControlsProperty(Control fatherControl)
        {
            System.Reflection.FieldInfo[] fieldInfo = this.GetType().GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
            for (int i = 0; i < fieldInfo.Length; i++)
            {
                //根据控件名称查找控件,作用根据控件的配置项目,
                Control[] myfindcs = this.Controls.Find(fieldInfo[i].Name, true);
                for (int j = 0; j < myfindcs.Length; j++)
                {
                    if (myfindcs[j] is UCBtnImg)
                    {
                        UCBtnImg d = (UCBtnImg)myfindcs[j];
                        d.BtnText = "UCBtnImg" + j.ToString();
                        this.textBox1.AppendText(d.BtnText + "\r\n");
                    }
                    if (myfindcs[j] is Button)
                    {
                        Button d = (Button)myfindcs[j];
                        d.Text = "button" + j.ToString();
                        this.textBox1.AppendText(d.Text + "\r\n");
                    }
                }
                //this.textBox1.AppendText(fieldInfo[i].FieldType + "\r\n"); //取得所有控件的类型
            }
        }

 

  //反射  根据类名称找到对象并改变属性值
            Control control = Controls.Find("ucBtnImg3", true)[0];
            object o = control.GetType().GetProperty("Text").GetValue(control, null); //取属性
            control.GetType().GetProperty("Text").SetValue(control, "text", null);  //设置属性
            this.textBox1.AppendText(o.ToString() + "\r\n");

            if (control is UCBtnImg)
            {
                UCBtnImg d = (UCBtnImg)control;
                this.textBox1.AppendText(d.BtnText + "\r\n");
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值