我有一组文本框控件,我想填充一组双打。控件名称按数字递增,如此
Tol1.Text = lineTolFront[0].ToString();
Tol2.Text = lineTolFront[1].ToString();
Tol3.Text = lineTolFront[2].ToString();
Tol4.Text = lineTolFront[3].ToString();
Tol5.Text = lineTolFront[4].ToString();
Tol6.Text = lineTolFront[5].ToString();
//and so on
有一种更简单的方法可以使用循环而无需手动输入值吗?
答案 0 :(得分:1)
首先,使用LINQ获取所有这些TextBox(注意:当你有许多你不想手动放入集合的控件时,这很有用。)
var tboxes = this.Controls.Cast<Control>()
.OfType<TextBox>()
.Where(l => l.Name.Contains("Tol"));
然后遍历它们并设置内容。
int i = 0;
foreach(var tb in tboxes)
tb.Text = lineTolFront[i++].ToString();
答案 1 :(得分:1)
您可以先将TextBox添加到集合中。至少复制/粘贴工作少了一点。
var textBoxes = new List<TextBox> { Tol1, Tol2, Tol3, Tol4, Tol5, Tol6 };
for (var i = 0; i < lineTolFront.Count; i++)
textBoxes[i].Text = lineTolFront[i].ToString();
关于M Patel的评论,请确保按照您想要从lineTolFront
数组中分配双打的顺序将TextBox添加到集合中。
答案 2 :(得分:0)
您可以将控件添加到数组中并循环遍历它:
var controls = new[] { Tol1, Tol2, Tol3, Tol4, Tol5, }; //etc
for(int i = 0; i < controls.Length; i++)
{
controls[i].Text = lineTolFront[i].ToString();
}