我正在尝试编写一个程序,当用户点击一个按钮时,它会打开任意数量的表单(每个表单都包含一个标签),并将它们放在一个列表中:
List<Form> formlist = new List<Form>();
...
public void showFrame()
{
Form f = new Form();
// I add the components i need ...
formlist.Add(f)
}
我现在需要的是,给定formlist中表单的i索引,以更改该表单的label.Text。 是否可以使用每个lavel使用不同的名称?
答案 0 :(得分:4)
将您添加到表单的控件赋予名称。那就是
formlist[i].Controls["somename"].Text = "mumble";
答案 1 :(得分:0)
简单的基于LINQ的解决方案:
Label label = form.Controls.OfType<Label>().SingleOrDefault();
话虽如此,请允许我说我相信您的方法有一个基本缺陷:您直接访问GUI控件意味着您将代码紧密地耦合到GUI。也就是说,您的代码与具体控件不可分割。恕我直言,建议您调查UI模式(如MVC或MVP),然后相应地重构程序的UI层,这样您就不必直接访问控件。