C#将列表加载到文本框WinForms中
本文关键字:WinForms 文本 列表 加载 | 更新日期: 2023-09-27 17:59:02
当我试图将列表显示到文本框中时,遇到了一个问题。它只显示list.txt文件中的最后一行。我认为每一行都会一直覆盖文本框中的第一行?从而只显示文件的最后一行?
我需要想些什么才能把它做好?
private void Form1_Load(object sender, EventArgs e)
{
const string f = "list.txt";
List<string> myList = new List<string>();
using (StreamReader r = new StreamReader(f))
{
string line;
while ((line = r.ReadLine()) != null)
{
myList.Add(line);
}
}
foreach (string s in myList)
{
textBox1.Text = string.Join(Environment.NewLine, s);
}
}
而不是这个:
foreach(myList中的字符串s){textBox1.Text=字符串。加入(Environment.NewLine,s);}
尝试:
textBox1.Text=字符串。加入(Environment.NewLine,myList);
还要确保textbox1的多行属性设置为true。
因为每次都直接分配给Text属性,该属性将删除前一个属性。这是解决办法。使文本框的Multiline为true。
private void Form1_Load(object sender, EventArgs e)
{
const string f = "list.txt";
List<string> myList = new List<string>();
using (StreamReader r = new StreamReader(f))
{
string line;
while ((line = r.ReadLine()) != null)
{
myList.Add(line);
}
}
var listString = new StringBuilder()
foreach (string s in myList)
{
listString.Append(Environment.Newline)
listString.Append(s);
}
textBox1.Text = listString.ToString();
}
根据我的评论,您可以通过消除foreach循环在一行中完成这一操作
textBox1.Text = string.Join(Environment.NewLine, myList.ToArray());
或者只使用myList工作相同的
textBox1.Text = string.Join(Environment.NewLine, myList);