列表框中所有已加载项目后的新行(C#)

时间:2018-05-07 11:10:48

标签: c# listbox

所以我想要这样的东西:

  

ITEM1

     

ITEM2

但我明白了:

  

ITEM1ITEM2

请帮忙!

我目前的代码:

TextWriter txt = new StreamWriter("IP.txt");
foreach (var item in listBox1.Items)
{
    txt.WriteLine("\n" + item.ToString());
    txt.Close();
}

listBox1.Items.Clear();
TextReader reader = new StreamReader("IP.txt");

listBox1.Items.Add("\n" + reader.ReadToEnd());
reader.Close();

4 个答案:

答案 0 :(得分:1)

使用Environment.NewLine代替"\n"

TextWriter txt = new StreamWriter("IP.txt");
foreach (var item in listBox1.Items)
{
    txt.WriteLine(Environment.NewLine + item.ToString());
    txt.Close();
}

listBox1.Items.Clear();
TextReader reader = new StreamReader("IP.txt");

listBox1.Items.Add(Environment.NewLine + reader.ReadToEnd());
reader.Close();

答案 1 :(得分:1)

摆脱读者/作者但使用File让.Net为你解决任务:

写入档案:

File.WriteAllLines("IP.txt", listBox1
  .Items
  .OfType<Object>() 
  .Select(item => item.ToString()));

从文件中读取:

listBox1.Items.Clear();

listBox1.Items.AddRange(File.ReadAllLines("IP.txt"));

答案 2 :(得分:1)

见下面的代码。你原来有几个错误:

  1. 您在用于将列表框项目写入文本文件的循环中关闭txt

  2. 您不需要\n中的txt.WriteLine("\n" + item.ToString());WriteLine提供换行符

  3. 您需要一个循环来读取文本文件并将每行重新添加回列表框

  4. 我建议您使用using来确保文件已关闭,如果程序因某种原因崩溃,则会处理对象

  5. 注意:我在添加回列表框的文本中添加了" text from file",以证明列表框是从文本文件加载的

    listBox1.Items.Add("Item1");
    listBox1.Items.Add("Item2");
    
     using (TextWriter txt = new StreamWriter("IP.txt"))
     {
         foreach (var item in listBox1.Items)
         {
             txt.WriteLine(item.ToString());
         }
     }
    
     listBox1.Items.Clear();
    
     using (StreamReader inputFile = File.OpenText("IP.txt"))
     {
         while (!inputFile.EndOfStream)
         {
             listBox1.Items.Add(inputFile.ReadLine() + " text from file");
         }
     }
    

    enter image description here

答案 3 :(得分:0)

ReadToEnd()读取当前位置到文本阅读器末尾的所有字符,并将它们作为一个字符串返回。而是使用它:

string[] lines = File.ReadAllLines("IP.txt");

这将包含您的所有行。您现在可以迭代数组并创建列表框项。