文本框值到数组

时间:2011-11-05 19:33:23

标签: c# arrays loops textbox

我有一些文本框,我想循环遍历它们并检查它们是否包含值,如果有,则将其放入数组中。

文本框称为txtText1,txtText2 .... txtText12。 这是我到目前为止所得到的:

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

..但不允许使用txtText [i]。

我如何循环浏览这些框?

5 个答案:

答案 0 :(得分:1)

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

可以使用

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

假设他们的ID已被正确指定,但我个人会使用 Designed 这些集合。

答案 1 :(得分:0)

假设txtText数组包含对TextBox对象的引用,则可以执行此操作

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

答案 2 :(得分:0)

我认为你不能在设计师中制作这样的数组对象。

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

然后在你的代码中你可以做到

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

答案 3 :(得分: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();

答案 4 :(得分: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";
}