使用变量访问文本字段名称(动态)

时间:2014-02-02 20:29:23

标签: c# dynamic textfield

我目前正在开发Windows Phone 7应用程序

我至少有9个文字字段,名称为"TEXTFIELD_ID_1" , "TEXTFIELD_ID_2"等... 会有更多。

我想通过循环访问每个字段:

if (currentpage == 1)
{
    for (int i = 1; i<10; i++)
    {
        string[] beitrag = result.Split(new string[] { "<split_inner>" }, StringSplitOptions.None);

        profile_img_1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("EXAMPLE.jpg);               
    }
}

如您所见,我使用直接方式(1)访问Image 1。 如何使用变量“i”访问图像/文本域?

THX

2 个答案:

答案 0 :(得分:2)

如果名称是常规的,那么只需使用:

string name = "TEXTFIELD_ID_" + i;
this.Controls[name].Text = "bla bla bla...";

关键点是ControlCollectionthis是指Form。您可以使用nameindex访问表单控件。

编辑:在WP7中,您必须拥有类似Grid的容器。例如,如果您有一个名为LayoutRoot的网格控件,则可以使用Children属性访问您的元素。如果您希望循环浏览TextBox,则可以使用OfType扩展方法:

var elements = LayoutRoot.Children;

foreach (var element in elements.OfType<TextBox>())
{
     var currentTextBox = element as TextBox;
     ...
}

答案 1 :(得分:0)

您可以在循环中使用FindControl方法:

if (currentpage == 1)
{
    for(int i = 1; i<10; i++)
    {
        string[] beitrag = result.Split(new string[] { "<split_inner>" }, StringSplitOptions.None);
        Control imgControl = FindControl(string.Format("profile_img_{0}", i));
        imgControl.Source = (ImageSource)new ImageSourceConverter()
                                 .ConvertFromString("EXAMPLE.jpg);
    }
}