有5个文本框,我想用for循环设置每个文本块的值。 它们被称为t_1,t_2,t_3等等。
for (int i=0; i<5; i++)`
{
("t_" + i).Text = i;`
}
这给出了这个错误:
错误1'string'不包含'Text'的定义,不包含 扩展方法'Text'接受'string'类型的第一个参数 可以找到(你错过了使用指令或程序集 引用?)
虽然文本框确实有.Text属性..我缺少什么? (顺便说一句,我使用MS VSExpress 2012 for windowsphone)
提前感谢:)
编辑:
非常感谢你们所有的努力! :d 你们真的帮帮我了,我回到正轨学习! :d
答案 0 :(得分:2)
我担心你可以直接这样做。创建一个文本框列表,如
var list = new List<TextBox> { t_1, t_2, t_3, t_4, t_5 };
然后你就可以了
for (int i=0; i<5; i++)
{
list[i].Text = i.ToString();
}
我还建议你替换
for (int i=0; i<5; i++)
与
for (int i = 0; i < list.Count; i++)
这样您就可以添加新控件而无需更改循环。
修改强>
Sudhakar的回答也是一个有用的解决方案,但为了澄清我的好处,以下是事实:
list[i].Text = i;
与参考拳击和Find("t_" + i,true)[0]
...可读性差异显着答案 1 :(得分:0)
您无法像变量一样调用变量。 使用此:
for (int i=0; i<5; i++)
{
if (i==1) t_1.Text = i.tostring()
else if (i==2) t_2.Text = i.tostring()
... so on
}
答案 2 :(得分:0)
Textboxes是上层对象的属性,可能是ASP.Net WebPage,XAML或WinForm。 为了能够遍历它们,您必须首先查看该对象,并更改其结构,以便Textboxes位于可枚举列表中。
我建议使用字符串索引器的字典,可能最适合你。