[英]create name of control from string
可以創建類似這樣的東西:
int[] array = new int[3]{1,2,3};
Button "btn"+array[0] = new Button();
您可以輕松地創建一個Button
實例數組,但是在編譯時將無法按名稱訪問它們。 由於名稱是在運行時生成的,因此您也必須在運行時存儲密鑰。
您可以做的最接近的事情是填充IDictionary<string, Button>
,如下所示:
int[] array = new int[3] { 1, 2, 3 };
IDictionary<string, Button> buttons =
array.ToDictionary(i => "btn" + i, i => new Button());
當然,通過鍵(即btn1
, btn2
, btn3
)訪問控件是您必須克服的問題(我假設您將它們存儲在某個地方,以后再訪問它們)。
根據您的評論,應該注意的是,您所指的名稱對表單或框架並不重要,而僅對您有意義。 如果您不希望,則不必使用IDictionary
,這只是您希望以后對它們進行進一步的工作(取決於您的需要)。
這是不可能的-您可以改用字典:
var myButtons = new Dictionary<string,Button>();
myButtons.Add( "btn"+array[0], new Button());
var firstButton = myButtons["btn1"];
您提出的要求不是直接可行的,但我認為您真正要尋找的是答案:
假設您有任何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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.