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 作业

请帮忙吗??!

C# 中的动态控件名称

您几乎不能使用任何语言的动态变量名称。

看起来您希望拥有控件的集合数组

像这样:

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