C#,通过字符串获取控件以及给控件赋值

2024-12-18 18:01:26
推荐回答(5个)
回答1:

给你写了个方法,你改一下就可以了

///


///
///

/// 控件名,区分大小写
/// 要设置的属性名,区分大小写
///
public void testMethod(string name, string attrbule, string value)
{
//循环某个窗口的所有控件,这里用当前窗体。
for (int i = 0; i < this.Controls.Count; i++)
{

//如果该控件的名字与指定的名字一致
if (this.Controls[i].Name == name)
{

//用放射取到指定的属性。属性名大小写必须一致
PropertyInfo pinfo = this.Controls[i].GetProperty(attrbule);

//判断是否找到属性
if (pinfo != null)
{
//使用反射设置值。
// Convert.ChangeType是将传进来的值转换为要设置
pinfo.SetValue(this.Controls[i], Convert.ChangeType(value, pinfo.PropertyType), null);
}
}
}
}

回答2:

foreach(Control ctrl in this.Controls)
{
if(ctrl is Button)
{
Button btn=ctrl as Button;
btn.Text="测试";
}
}
窗体有Controls属性。里面放的是自己所有子控件
当然如果你Button在窗体上的容器里,譬如Panel。那么先按这个方法去找Panel,然后再找Button
谢谢。

回答3:

//先把控件找出来
Control col = this.Panel1.Controls.Find("button1", true)[0];
if (col != null)
{
//转换为Button类对象
Button btn = col as Button;
//定位到某个属性(prop_text是个字符串,比如"Text")
PropertyInfo pinfo = btn.GetProperty(prop_text);
//判断是否找到属性
if (pinfo != null)
{
// value是该属性需要设置的新值
pinfo.SetValue(btn, Convert.ChangeType(value, pinfo.PropertyType), null);
}
}

回答4:

string button="Button1";
foreach (Control c in this.form1.Controls)//循环所有控件
{
if (c.ID == button)//判断控件ID
{
Button btn = c as Button; //控件类型转换
btn.Text = "测试"; //控件赋值
}
}

回答5:

用反射