更改对象的属性

时间:2013-12-07 16:40:22

标签: c# windows object properties

我刚开始学习c#而且我有这个小东西。 我真的不知道如何调用它,但在这里:

有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

3 个答案:

答案 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位于可枚举列表中。

我建议使用字符串索引器的字典,可能最适合你。