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

        }

C#将列表加载到文本框WinForms中

而不是这个:

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);