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);
此外,您可以避免使用 Aggregate
或 Join
进行 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");