繁体   English   中英

C#中的动态控件名称

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM