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」一個控件,它不同於任何本地變量名稱 –