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

本文关键字:文本 一行 添加 单独 文件 | 更新日期: 2024-10-31 10:56:56

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

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 ?
        }
    }
}

因此,如果我的文本文件中有:
-狗
-计算机
-钱

我想拥有:

  • 文本框1第一行(狗)
  • 文本框2第二行(计算机)
  • 文本框3第三行(钱)

更新:添加了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 ?
        }
    }
}

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

将 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];
    }
}

这是我的建议

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];
        }         
    }
}

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

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