2011-11-05 45 views
0

我有几个文本框,我想遍历它们并检查它们是否包含值,如果它们是,则将其放入数组中。文本框的值到数组

该文本框被称为txtText1,txtText2 .... txtText12。 这是我走到这一步:

for (int i = 1; i < 13; i++) 
{ 
    if(txtText[i] != String.Empty) 
    { 
     TextArray[i] = Convert.ToString(txtText[i].Text); 
    } 
} 

..但txtText [i]是不允许的。

我该如何循环浏览这些框?

回答

1

理想情况下,通过将它们放入数组中来开始,而不是使用几个单独的变量。基本上你想要一个文本框的集合,对吧?所以使用集合类型。

可以使用

TextBox tb = (TextBox) Controls["txtText" + i]; 

假设它们的ID已正确指定,但我个人会用这样的事情设计集合

0

假设txtText数组包含你可以做到这一点

var textArray=txtText.Where(t=>!string.IsNullOrEmpty(t.Text)).Select(t=>t.Text).ToArray(); 
0

我不认为你可以在设计作出这样的数组对象不再到文本框对象的引用。

无论如何你可以做的是:你可以创建一个类变量IEnumerable<Textbox> _textboxes,并用构造函数中的所有文本框填充它。

然后后面的代码中,你可以做

foreach(var textbox in _textboxes) 
{ 
    Console.WriteLine(textbox.Text); // just an example, idk what you want to do with em 
} 
0

你可以尝试这样的....

List<string> values = new List<string>(); 
    foreach(Control c in this.Controls) 
    { 
     if(c is TextBox) 
     { 

      TextBox tb = (TextBox)c; 
      values.Add(tb.Text); 
     } 
    } 
    string[] array = values.ToArray(); 
0

尝试创建文本框的列表,而不是像这样的阵列:

List<TextBox> myTextboxList = new List<TextBox>(); 
myTextBoxList.Add(TextBox1); 
myTextBoxList.Add(TextBox2); 
mytextBoxList.Add(TextBox3); 

然后使用foreach像这样一次访问每个项目:

Foreach (TextBox item in myTextboxList) { 
    // Do something here, for example you can: 
    item.Text = "My text goes here"; 
}