遍历字段
本文关键字:字段 遍历 | 更新日期: 2023-09-27 18:04:49
首先,我不完全确定如何表达这个问题,或者如果有人之前问过,我应该搜索什么。
假设我有多个标签:label1, label2, label3, label4等…
现在,我知道这在PHP中工作,所以我想知道是否有一种方法可以在c# -中做到这一点我能以某种方式迭代这些标签,在循环中设置它们的值吗?
。
string[] something = new string[3] { "text", "text", "text" };
for (int i = 0; i < something.length; i++)
{
labels(i).Text = something[i];
}
您可以使用Controls.Find()
方法通过控件名称查找标签控件。
试试这个:
for (int i = 0; i < something.length; i++)
{
((Label) Controls.Find("lablel"+i,true)[0]).Text = something[i];
}
您可以使用.OfType<>
。
foreach(Label l in this.Controls.OfType<Label>())
{
...
}
或者直接找到所有的标签而不需要知道它们的名称:
foreach (Control ctrl in this.Controls)
{
Label label = ctrl as Label;
if (label != null)
{
label.Text = "";
}
}
您可以使用Controls.Find
查找所有引用:
for (int i = 0; i < something.length; i++)
{
var lbl = this.Controls.Find("lable" + i, true);
if(lbl.Length > 0)
((Label)lbl[0]).Text = something[i];
}
另一种使用LINQ的方法(与Find
相反,它不进行递归搜索):
for (int i = 0; i < something.Length; i++)
{
Label lbl = this.Controls.Cast<Label>()
.FirstOrDefault(l => l.Name.Equals("lable" + i, StringComparison.InvariantCultureIgnoreCase));
if(lbl != null) lbl.Text = something[i];
}
然而,我不认为这是好的做法。数组和标签是直接相关的。如果你改变了数组却忘了改变标签,会发生什么?
您应该使用不同的控件,如ListBox
或DataGridView
,或根据数组的大小动态创建标签