C# 中的动态控件名称
本文关键字:动态控件 | 更新日期: 2023-09-27 17:55:31
我正在尝试以下代码:
for (int i = 0; i < students.Length; i++)
{
"student" + i.ToString().Text = students[i];
}
我已经有很多标签,每个标签都有这样的名称:学生1学生2学生3..
但是我得到了这个错误:错误 1 "string"不包含"Text"的定义,并且找不到接受类型为"string"的第一个参数的扩展方法"Text"(是否缺少 using 指令或程序集引用? 女:''作业''作业''表格1.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];
}
Use Controls.Find("student" + i.ToString())
这可能会有所帮助
Controls.Find(string.Format("student{0}", i));
更好的解决方案:
按如下所示设置Labels
Tag
属性:
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()
否则,删除.Text
。