2016-03-16 190 views
1

所以我想從一個字符串創建一個按鈕。我知道如何通過一個字符串來訪問一個按鈕,如果它已經被創建,但這不是atm的情況。爲一個字符串中的按鈕創建一個變量

像這樣:Button "myButton" = new Button();

當然,這並不工作,但,這是可能的嗎?

+0

你可以詳細說明「從字符串創建按鈕」是什麼意思?你是否想以某種方式將一個字符串與一個按鈕相關聯? –

+0

@ E.Moffat我很抱歉模糊的標題,我想從字符串中創建按鈕名稱。正如我在我的例子中所展示的那樣。 Button「myButton」= new Button(); – Gewoo

+0

*「我知道如何通過字符串訪問按鈕,如果它已經創建」*您打算如何做到這一點?我想你會發現他們正在通過一個按鈕的Name屬性進行搜索,並且完全不關心本地變量名是什麼。示例[ControlCollection.Find](https://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.find(v = vs.100).aspx)正在搜索「Name」一個控件,它不同於任何本地變量名稱 –

回答

2

假設你正在使用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 
相關問題