从列表向格式文本框添加行时遇到问题


    private void btnAdd_Click(object sender, EventArgs e)
    {
        StreamWriter outputFile;
        outputFile = File.AppendText("texter.txt");
        outputFile.WriteLine(txtInput.Text);
        outputFile.Close();
        List<String> mainList = new List<String>();
        StreamReader inputFile;
        inputFile = File.OpenText("texter.txt");
        while (inputFile.EndOfStream == false)
        {
            mainList.Add(inputFile.ReadLine());
        }
        inputFile.Close();
        for (int i = 0; i < mainList.Count; i++)
        {
            txtOutput.Text = mainList[i];
        }
    }

它位于按钮处理程序内部,还有一个用于相关输入的文本框。 但是,每当我点击按钮时,它都会覆盖上一个条目。 我想将列表中的所有内容都放入文本框中。

您正在使用=运算符,它不添加任何内容,它将值分配给属性。使用+=运算符或将文本值分配给先前值 + 新值的总和。

txtOutput.Text += mainList[i];
// or 
txtOutput.Text = txtOutput.Text +  mainList[i];
// or 
txtOutput.Text = mainList[i] + txtOutput.Text;

但我建议使用String.Format而不是++=运算符

txtOutput.Text = string.Format("{0}n{1}", mainList[i], txtOutput.Text);

此外,您可以避免使用 AggregateJoin 进行 for 循环。

var text = mainList.Aggregate((x, next) => string.Format("{0}n{1}", next, x));
var text = string.Join("n", mainList);

此外,您可以使用 ReadAllText 方法在一个 go 字符串中读取整个文件。

var text = File.ReadAllText("texter.txt");

然后将其添加到文本框

 txtOutput.Text = string.Format("{0}n{1}", mainList[i], text);

3 个选项:

修复分配

txtOutput.Text += mainList[i] + Environment.NewLine;

或替换 for 循环

txtOutput.Text = string.Join(Environment.NewLine, mainList);

或者替换循环和流阅读器

txtOutput.Text = File.ReadAllText("texter.txt");

最新更新