在C#中的单独文本框中添加文本文件中的每一行

时间:2015-03-08 21:13:59

标签: c# winforms

我的应用程序中有30多个TextBox,我想按顺序添加每个文本框中文本文件的每一行。

private void button2_Click(object sender, EventArgs e)
{
    if (path1 != null && Directory.Exists(path1))
    {
        var lines = File.ReadAllLines(path1);
        foreach (var line in lines)
        {
            //what is here ?
        }
    }
}

所以,如果我有我的文本文件:
  - 狗
  - 电脑
  - 钱

我想进来:

  • textbox1 第一行(狗)
  • textbox2 第二行(计算机)
  • textbox3 第三行(钱)

更新:添加了TextBoxes的列表。现在,我如何一次访问一个文本框并在foreach

中使用它
private void button2_Click(object sender, EventArgs e)
{
    List<TextBox> textBoxes = new List<TextBox>();

    for (int i = 1; i <= 37; i++)
    {
        textBoxes.Add((TextBox)Controls.Find("textBox" + i, true)[0]);
    }

    if (path1 != null && Directory.Exists(path1))
    {
        var lines = File.ReadAllLines(path1);
        foreach (var line in lines)
        {
            //what is here ?
        }
    }
}

3 个答案:

答案 0 :(得分:0)

将foreach转换为for并使用索引访问当前行以及指定的文本框:

if (path1 != null && File.Exists(path1))
{
    var lines = File.ReadAllLines(path1);
    for (var lineIndex = 0; lineIndex < Math.Min(lines.Length, textBoxes.Count); lineIndex++)
    {
        textBoxes[lineIndex].Text = lines[lineIndex];
    }
}

答案 1 :(得分:0)

如果你想使用你的foreach循环,试试这个:

var textBoxIndex = 0;
foreach (var line in lines)
{
   textBoxes[textBoxIndex++].Text = line;
}

答案 2 :(得分:0)

这是我的建议

public partial class Form1 : Form
{
    string Path1 = "MyFile.txt";

    List<TextBox> textBoxes = new List<TextBox>();

    public Form1()
    {
        InitializeComponent();            
    }        

    private void button2_Click(object sender, EventArgs e)
    {
        foreach (Control item in this.Controls)
        {
            if (item is TextBox)
            {
                textBoxes.Add((TextBox)item);
            }
        }

        string[] lines = File.ReadAllLines(Path1);

        for (int i = 0; i < lines.Length; ++i)
        {
            textBoxes[i].Text = lines[i];
        }         
    }
}