1
所以我想从一个字符串创建一个按钮。我知道如何通过一个字符串来访问一个按钮,如果它已经被创建,但这不是atm的情况。为一个字符串中的按钮创建一个变量
像这样:Button "myButton" = new Button();
当然,这并不工作,但,这是可能的吗?
所以我想从一个字符串创建一个按钮。我知道如何通过一个字符串来访问一个按钮,如果它已经被创建,但这不是atm的情况。为一个字符串中的按钮创建一个变量
像这样:Button "myButton" = new Button();
当然,这并不工作,但,这是可能的吗?
假设你正在使用ControlCollection.Find由一个字符串来找到你的控件,然后记下该MSDN项:
搜索控制通过他们的名称属性,并建立匹配的所有控件数组。
它不关心什么(如果有的话)的变量名称的按钮被分配到(也不可能知道或以任何有用的方式来使用它),它只关心你的按钮Name
财产。所以,你可以做这样的事情:
var IDontCareWhatThisIsCalled = new Button()
{
Name = "myButton"
};
someForm.Controls.Add(IDontCareWhatThisIsCalled);
然后:
var thatButton = someForm.Controls.Find("myButton");
但是,如果你有一堆按钮,你需要能够通过名称查找,那么最好的选择可能会把它们放在一个Dictionary<string,Button>
:
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
你可以详细说明“从字符串创建按钮”是什么意思?你是否想以某种方式将一个字符串与一个按钮相关联? –
@ E.Moffat我很抱歉模糊的标题,我想从字符串中创建按钮名称。正如我在我的例子中所展示的那样。 Button“myButton”= new Button(); – Gewoo
*“我知道如何通过字符串访问按钮,如果它已经创建”*您打算如何做到这一点?我想你会发现他们正在通过一个按钮的Name属性进行搜索,并且完全不关心本地变量名是什么。示例[ControlCollection.Find](https://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.find(v = vs.100).aspx)正在搜索“Name”一个控件,它不同于任何本地变量名称 –