可以创建类似的东西:
int[] array = new int[3]{1,2,3};
Button "btn"+array[0] = new Button();
答案 0 :(得分: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());
当然,通过密钥(即btn1
,btn2
,btn3
)访问控件是您必须克服的问题(我假设您将这些存储在某处,并且稍后访问它们。)
根据您的评论,应该注意的是,您所指的名称对于表单或框架并不重要,它们仅对您有意义。如果您不希望使用IDictionary
,则不必使用{{1}},这只是您希望以后再进一步处理它们(取决于您的需求)。
答案 1 :(得分:2)
这是不可能的 - 你可以改用字典:
var myButtons = new Dictionary<string,Button>();
myButtons.Add( "btn"+array[0], new Button());
var firstButton = myButtons["btn1"];
答案 2 :(得分: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]