3

リストをテキストボックスに表示しようとすると問題が発生します。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);

            }


        }
4

3 に答える 3

5

これの代わりに:

foreach(myListの文字列s){textBox1.Text = string.Join(Environment.NewLine、s); }

試す:

textBox1.Text = string.Join(Environment.NewLine、myList);

また、textbox1の複数行のプロパティがtrueに設定されていることを確認してください。

于 2013-02-13T17:38:13.487 に答える
0

毎回、前のプロパティを削除するTextプロパティに直接割り当てるためです。これが修正です。テキストボックスの複数行を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();

        }
于 2013-02-13T17:36:54.727 に答える
0

私のコメントに基づいて、foreachループを削除することで、これを1行で実行できます。

textBox1.Text = string.Join(Environment.NewLine, myList.ToArray());

または、myListを使用しても同じように機能します

textBox1.Text = string.Join(Environment.NewLine, myList);
于 2013-02-13T17:43:19.813 に答える