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];
}
}
这是一个按钮处理程序,还有一个文本框用于输入。然而,每当我按下按钮时,它都会覆盖前一个条目。我希望从列表中的所有内容到文本框中。
答案 0 :(得分:2)
您使用的=
运算符不会添加任何内容,它会为属性赋值。
使用+=
运算符或将文本值指定为前一个值+新值的总和。
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");
然后将其添加到TextBox
txtOutput.Text = string.Format("{0}\n{1}", mainList[i], text);
答案 1 :(得分:0)
3个选项:
修复作业
txtOutput.Text += mainList[i] + Environment.NewLine;
或替换循环
txtOutput.Text = string.Join(Environment.NewLine, mainList);
或者替换循环和StreamReader
txtOutput.Text = File.ReadAllText("texter.txt");