C# 从字符串为按钮创建变量
所以我想从一个字符串创建一个按钮。如果按钮已经创建,我知道如何通过字符串访问它,但事实并非如此 如下所示:C# 从字符串为按钮创建变量,c#,.net,winforms,button,C#,.net,Winforms,Button,所以我想从一个字符串创建一个按钮。如果按钮已经创建,我知道如何通过字符串访问它,但事实并非如此 如下所示:按钮“myButton”=新按钮() 但这当然不起作用,可以这样做吗?假设您使用字符串查找控件,请注意MSDN条目: 按控件的Name属性搜索控件,并生成匹配的所有控件的数组 它不关心按钮分配给什么(如果有)变量名(也不知道或以任何有用的方式使用它),它只关心按钮的name属性。所以你可以这样做: var IDontCareWhatThisIsCalled = new Button() {
按钮“myButton”=新按钮()代码>
但这当然不起作用,可以这样做吗?假设您使用字符串查找控件,请注意MSDN条目:
按控件的Name属性搜索控件,并生成匹配的所有控件的数组
它不关心按钮分配给什么(如果有)变量名(也不知道或以任何有用的方式使用它),它只关心按钮的name
属性。所以你可以这样做:
var IDontCareWhatThisIsCalled = new Button()
{
Name = "myButton"
};
someForm.Controls.Add(IDontCareWhatThisIsCalled);
然后:
var thatButton = someForm.Controls.Find("myButton");
但是,如果有一组按钮需要按名称查找,那么最好的选择可能是将它们放在字典中
:
Dictionary按钮Dictionary=newdictionary();
// ....
var b=新按钮();
buttonDictionary[“myButton”]=b;
someForm.Controls.Add(b);
// ...
//要稍后检索,请执行以下操作:
var thatButton=buttonDictionary[“myButton”];//注意,如果密钥不存在,它将
//抛出一个异常-所以先检查
您能否详细说明“从字符串创建按钮”的含义?您是否试图以某种方式将字符串与按钮关联?@E.Moffat很抱歉标题不明确,我想从字符串创建按钮名称。正如我在示例中所示。按钮“myButton”=新按钮();“如果按钮已经创建,我知道如何通过字符串访问该按钮”您打算怎么做?我想你会发现他们是通过按钮的Name
属性来搜索的,根本不关心局部变量名是什么。例如,搜索控件的名称
,它不同于任何局部变量名称。听起来,您试图做的是从字符串中命名变量。。。这与创建按钮无关。不能从稍后(编译后)确定的字符串(如“myButton”
)创建代码标识符myButton
。最好使用字典之类的关联容器,或者在按钮上设置Name
属性。
Dictionary<string,Button> buttonDictionary = new Dictionary<string,Button>();
// ....
var b = new Button();
buttonDictionary["myButton"] = b;
someForm.Controls.Add(b);
// ...
// To retrieve later:
var thatButton = buttonDictionary["myButton"]; // Note if the key doesn't exist, it will
// throw an exception - so check first