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

已知控件的名称,控件的类型,控件的属性,控件的属性值,问题是,这些都是字符串类型的,举个例子,有个Button控件,他的名字叫“button1”。我有4个字符串,分别是"... 已知控件的名称,控件的类型,控件的属性,控件的属性值,问题是,这些都是字符串类型的,举个例子,有个Button控件,他的名字叫“button1”。
我有4个字符串,分别是"Button","button1","Text","测试"
如何让系统找到button1的控件?(在窗体下,panel之类的无父容器)
如何将这个控件转换为Button类型?
如何将这个控件的Text属性赋值为“测试”?
展开
 我来答
月冷_星晴
2011-09-09 · TA获得超过146个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:163万
展开全部
给你写了个方法,你改一下就可以了

/// <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);
}
}
}
}
Lim
2011-09-09 · 知道合伙人软件行家
Lim
知道合伙人软件行家
采纳数:152 获赞数:1014
资深研发工程师,敏捷教练ScrumMaster

向TA提问 私信TA
展开全部
foreach(Control ctrl in this.Controls)
{
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="测试";
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
俞武嘉
2016-11-03
知道答主
回答量:1
采纳率:0%
帮助的人:1066
展开全部
//先把控件找出来
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);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lttStudyData
2011-09-09 · TA获得超过185个赞
知道小有建树答主
回答量:138
采纳率:0%
帮助的人:108万
展开全部
string button="Button1";
foreach (Control c in this.form1.Controls)//循环所有控件
{
if (c.ID == button)//判断控件ID
{
Button btn = c as Button; //控件类型转换
btn.Text = "测试"; //控件赋值
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
滑青穆菊月
2019-02-25 · TA获得超过1379个赞
知道小有建树答主
回答量:1797
采纳率:100%
帮助的人:8.3万
展开全部
用反射
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式