C#中的动态控件名称

时间:2013-01-24 10:33:33

标签: c#

我正在尝试以下代码:

for (int i = 0; i < students.Length; i++)
{
    "student" + i.ToString().Text = students[i];
}

我已经有很多标签,每个标签的名称如下: student1 STUDENT2 学生三 。

但是我收到了这个错误: 错误1'字符串'不包含'文本'的定义,并且没有扩展方法'文本'接受类型'字符串'的第一个参数可以找到(你是否缺少using指令或程序集引用?)F:\ Homework \ Homework \ Form1.cs 161 46家庭作业

请帮忙吗??!

4 个答案:

答案 0 :(得分:8)

您不能使用任何语言来拥有动态变量名称。

您希望拥有集合数组控件。

类似的东西:

var studentControls = new List<Control>();
studentControls.Add(student1); 
studentControls.Add(student2);
...
for (int i = 0; i < students.Length; i++)
{
    studentControls[i].Text = students[i];
}

答案 1 :(得分:3)

使用Controls.Find(“student”+ i.ToString())

答案 2 :(得分:3)

这可能会有所帮助

Controls.Find(string.Format("student{0}", i));

更好的解决方案:

设置Tag的{​​{1}}属性,如下所示:

Labels

我假设您的Student1.Tag = 1; Student2.Tag = 2; Student3.Tag = 3; 位于名为Labels的容器控件中。使用此代码:

container

答案 3 :(得分:0)

通过执行i.ToString(),您将获得一个字符串,该字符串没有Text :)属性。这就是造成你的例外的原因。

如果Students是包含属性.Text的控件列表,请使用该列表并删除其他ToString(),删除.Text