文本框中的文本列表

时间:2013-05-27 18:09:36

标签: c# string list for-loop textbox

我真的很擅长C#和整体编程,所以我的问题在你看来可能是愚蠢的,但现在就是。

我创建了一个包含7个文本框的表单,我想从这些文本框中收集文本并将它们添加到列表中。但是我得到一个错误说,System.Windows.Forms.TextBox是'类型'但是像'变量'一样使用。我该怎么办?

for (int i = 1; i < 8; i++)
{
    if (TextBox[i].Text == "")
    {
        days.Add("Restday");
    }
    else
    {
        days.Add(TextBox[i].Text);
    }   
}

4 个答案:

答案 0 :(得分:3)

TextBox是一种类型。所以TextBox [i]给你带来了麻烦。

你总是可以做这样的事情

foreach(Control ctrl in yourform.Controls)
{
    Textbox = ctrl as TextBox;
    if(txtBox != null)
    {
        if (txtBox.Text == "")
        {
            days.Add("Restday");
        }
        else
        {
            days.Add(txtBox.Text);
        } 
    }
}

这项工作为基本形式。如果您有pannel和其他容器来整理您的控件,Guffa answer中描述的approch可能会更好。这也可以重写为接受Control递归使用集合以达到所有控件的方法。

答案 1 :(得分:2)

我猜你没有一个名为TextBox的数组,这就是错误的原因。您可以尝试以下操作:

List<strig> days = this.Controls.OfType<TextBox>
                                .Select(r=> string.IsNullOrWhiteSpace(r.Text) 
                                            ? "Restday" : r.Text)
                                .ToList();

但是上面会给你直接在表单上添加的文本框,如果这些文本框在其他控件中,那么you can look for recursively

答案 2 :(得分:2)

将文本框引用放在数组中,以便您可以轻松地遍历它们。如果您的文本框名为TextBox1TextBox7

TextBox[] boxes = {
  TextBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, TextBox7
};

foreach (TextBox box in boxes) {
  if (box.Text == "") {
    days.Add("Restday");
  } else {
    days.Add(box.Text);
  }
}

答案 3 :(得分:0)

进入表单编辑器并选择一个文本框。现在找到属性窗口。如果它不可见,请单击视图 - >属性窗口

其中一个属性将是文本框控件的名称。使用它来访问它的文本值,如下所示:

days.Add(txtMyTextboxName.Text);

如果你必须遍历文本框,你可以这样做:

foreach(var Textbox in this.Controls.OfType<TextBox>())
{
    if (Textbox.Text == "")
    {
        days.Add("Restday");
    }
    else
    {
        days.Add(Textbox.Text);
    }   
}

但请记住,这是一种非常标准的方法,不推荐使用。