簡體   English   中英

從字符串創建控件名稱

[英]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());

當然,通過鍵(即btn1btn2btn3 )訪問控件是您必須克服的問題(我假設您將它們存儲在某個地方,以后再訪問它們)。

根據您的評論,應該注意的是,您所指的名稱對表單或框架並不重要,而僅對您有意義。 如果您不希望,則不必使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM