C#,通过字符串获取控件以及给控件赋值 20
已知控件的名称,控件的类型,控件的属性,控件的属性值,问题是,这些都是字符串类型的,举个例子,有个Button控件,他的名字叫“button1”。我有4个字符串,分别是"...
已知控件的名称,控件的类型,控件的属性,控件的属性值,问题是,这些都是字符串类型的,举个例子,有个Button控件,他的名字叫“button1”。
我有4个字符串,分别是"Button","button1","Text","测试"
如何让系统找到button1的控件?(在窗体下,panel之类的无父容器)
如何将这个控件转换为Button类型?
如何将这个控件的Text属性赋值为“测试”? 展开
我有4个字符串,分别是"Button","button1","Text","测试"
如何让系统找到button1的控件?(在窗体下,panel之类的无父容器)
如何将这个控件转换为Button类型?
如何将这个控件的Text属性赋值为“测试”? 展开
5个回答
展开全部
给你写了个方法,你改一下就可以了
/// <summary>
///
/// </summary>
/// <param name="name">控件名,区分大小写</param>
/// <param name="attrbule">要设置的属性名,区分大小写</param>
/// <param name="value">值</param>
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);
}
}
}
}
/// <summary>
///
/// </summary>
/// <param name="name">控件名,区分大小写</param>
/// <param name="attrbule">要设置的属性名,区分大小写</param>
/// <param name="value">值</param>
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);
}
}
}
}
展开全部
foreach(Control ctrl in this.Controls)
{
if(ctrl is Button)
{
Button btn=ctrl as Button;
btn.Text="测试";
}
}
窗体有Controls属性。里面放的是自己所有子控件
当然如果你Button在窗体上的容器里,譬如Panel。那么先按这个方法去找Panel,然后再找Button
谢谢。
{
if(ctrl is Button)
{
Button btn=ctrl as Button;
btn.Text="测试";
}
}
窗体有Controls属性。里面放的是自己所有子控件
当然如果你Button在窗体上的容器里,譬如Panel。那么先按这个方法去找Panel,然后再找Button
谢谢。
更多追问追答
追问
Text属性是字符串类型的
下次我传入"Enable",“False”
希望实现的就是 Enable赋值为False
另外,我是需要获取名字为"button1"的控件
追答
foreach(Control ctrl in this.Controls)
{
if(ctrl is Button)
{
Button btn=ctrl as Button;
if(btn.Name=="button1")
btn.Text="测试";
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//先把控件找出来
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);
}
}
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string button="Button1";
foreach (Control c in this.form1.Controls)//循环所有控件
{
if (c.ID == button)//判断控件ID
{
Button btn = c as Button; //控件类型转换
btn.Text = "测试"; //控件赋值
}
}
foreach (Control c in this.form1.Controls)//循环所有控件
{
if (c.ID == button)//判断控件ID
{
Button btn = c as Button; //控件类型转换
btn.Text = "测试"; //控件赋值
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用反射
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询