2011-05-08 44 views
0

控制的名稱有可能創造這樣的事情:創建的字符串

int[] array = new int[3]{1,2,3}; 
Button "btn"+array[0] = new Button(); 
+0

在什麼情況下你想使用這個? – BrokenGlass 2011-05-08 20:25:37

+0

將動態控件添加到具有唯一名稱的面板 – netmajor 2011-05-08 20:27:08

回答

4

您可以輕鬆創建一個數組Button實例,但在編譯時您將無法通過名稱訪問它們;由於該名稱將在運行時生成,因此您還必須在運行時存儲這些密鑰。

你可以做的最接近的是填充的IDictionary<string, Button>的實現,就像這樣:

int[] array = new int[3] { 1, 2, 3 }; 

IDictionary<string, Button> buttons = 
    array.ToDictionary(i => "btn" + i, i => new Button()); 

當然,通過按鍵(即btn1btn2btn3)訪問控制是你的問題克服(我假設你將這些存儲在某個地方,並在稍後訪問它們)。

根據您的評論,應該注意的是,您所指的名稱對於表單或框架而言並不重要,它們只對您有意義。如果您不希望的話,您不必使用IDictionary,這僅僅是您希望稍後進一步處理它們(取決於您的需求)。

2

這是不可能的 - 你可以使用,而不是一本字典:

var myButtons = new Dictionary<string,Button>(); 
myButtons.Add("btn"+array[0], new Button()); 

var firstButton = myButtons["btn1"]; 
1

你問什麼是不能直接,但我認爲這是對你其實在尋找什麼答案:

假設你有任何IEnumerable<int>你自己喜歡的數組:

Dictionary<int, Buttton> buttons = new Dictionary<int, Button>; 
foreach (int key in array) 
{ 
    Button b = new Button(); 
    b.Text = key.ToString(); 
    buttons.Add(key, b); 
} 

現在你可以很容易地使用像這樣的按鈕:buttons[1]