[英]Dynamic Control names in C#
我正在尝试以下代码:
for (int i = 0; i < students.Length; i++)
{
"student" + i.ToString().Text = students[i];
}
我已经有很多标签,每个标签都有这样的名字:student1 student2 student3。 。
但我得到了这个错误:错误1'字符串'不包含'文本'的定义,也没有扩展方法'文本'接受类型'字符串'的第一个参数可以找到(你是否缺少using指令或程序集引用?)F:\\ Homework \\ Homework \\ Form1.cs 161 46作业
请帮忙吗??!
您几乎不能使用任何语言拥有动态变量名称。
看起来你正在寻找一个集合或控件数组 。
就像是:
var studentControls = new List<Control>();
studentControls.Add(student1);
studentControls.Add(student2);
...
for (int i = 0; i < students.Length; i++)
{
studentControls[i].Text = students[i];
}
使用Controls.Find(“student”+ i.ToString())
这可能有所帮助
Controls.Find(string.Format("student{0}", i));
更好的解决方案:
设置Tag
的你财产Labels
如下:
Student1.Tag = 1;
Student2.Tag = 2;
Student3.Tag = 3;
我假设您的Labels
位于容器控件中,名为container
。 使用此代码:
foreach(var item in container.Children) //based on your container type this line may change
{
if(item is Label)
{
Label temp = ((Label)item);
temp.Text = students[int.Parse(temp.Tag.ToString())]
}
}
通过执行i.ToString()
您将获得一个字符串,该字符串没有Text :)属性。 这就是造成你的例外的原因。
如果Students
是具有属性.Text
的控件列表,则使用该属性并删除ToString()
else,删除.Text
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.