如何按名称查找文本框并将其内容写入文本文件

时间:2013-01-24 20:24:35

标签: c#

  

可能重复:
  Find a control in C# winforms by name

我会尝试解释它..所以我有一个for循环,每次我想加载与循环整数相等的文本框号。

这是我的代码:

for(int i=1 ; i<=indulok+1 ; i++)
{
    StreamWriter sw = new StreamWriter("futamok/"+comboBox1.Text + "/" + indulok + ".txt");
    sw.WriteLine(textBox1.Text);
    sw.Dispose();
}

现在我想将textBox1.Text替换为这样的东西:

sw.WriteLine(textBox + i + .Text);

但这当然不起作用。

3 个答案:

答案 0 :(得分:5)

这是一个可以通过名称找到控件的替代方法。

        for (int i = 1; i <= indulok + 1; i++)
        {
            if (this.Controls.ContainsKey("textBox" + i.ToString()))
            {
                TextBox txtBox = this.Controls["textBox" + i.ToString()] as TextBox;
                if (txtBox != null)
                {
                    string FileName = "C:\\" + i.ToString() + ".txt";
                    System.IO.File.WriteAllText(FileName, txtBox.Text);
                }
            }
        }

如果你的控件嵌套在其他控件(即GroupBox)中,你可能需要使用Find函数

        for (int i = 1; i <= indulok + 1; i++)
        {
            Control[] controls = this.Controls.Find("textBox" + i.ToString(), true);
            if (controls.Length > 0)
            {
                TextBox txtBox = controls[0] as TextBox;
                if (txtBox != null)
                {
                    string FileName = "C:\\" + i.ToString() + ".txt";
                    System.IO.File.WriteAllText(FileName, txtBox.Text);
                }
            }
        }

答案 1 :(得分:3)

您可以将文本框放入某种索引集合中。最简单的是数组

所以,假设你有一些像

这样的数组
textBox[] textBoxes

然后你可以打电话

sw.WriteLine(textBoxes[i].text);

答案 2 :(得分:0)

我猜你正在运行某种Windows Forms项目?如果是,您可以循环Controls-array来查找所有文本框:

foreach (Control c in this.Controls)
{
    if (c.GetType() == textBox1.GetType())
        sw.WriteLine(c.Text);
}