StreamReader到多个列表框

时间:2017-04-09 18:08:23

标签: c# listbox streamreader

我正在尝试使用StreamReader将文本文件中的数据分成多个列表框。到目前为止,我已经能够将所有数据都存入 one 列表框,但是我的项目的下一步需要拆分数据,我认为我理解列表框比数组更好。我已经努力寻找类似的问题,但因为我是初学者,我发现的大部分内容让我更加困惑。我只能成功完成以下任务:

StreamReader file = new StreamReader(openFileDialog1.FileName);
string data;
while (!file.EndOfStream)
{
    data = file.ReadLine();
    listBox1.Items.Add(data);
}
file.Close();

我的.txt文件中的数据有三个块,如下所示:

blue
david
8042
red
joseph
7042

我无法更改数据格式,所以我一直试图以这样的方式编写代码

if (blue)
    listBox1.Items.Add(david);
    listBox2.Items.Add(8042);
else if (red)
    listBox3.Items.Add(joseph);
    listBox4.Items.Add(7042);

等。我只有两种颜色可供使用,但每种颜色都有很多数据。我的问题是,我不熟悉编码,也没有落实我已经学过的基础知识。

在StreamReads中,在行下方行中添加行 - 列表框时,缺少哪些代码行?我需要使用

吗?
int counter = 0;

并将它增加1或2以获得这些线,或者我是否基本上考虑过?

非常感谢您的帮助。我觉得我错过了一些我还没有掌握的非常简单的东西。

1 个答案:

答案 0 :(得分:0)

一种可能的出路是通过三行(即整个块)而不是一行来读取:

  using (StreamReader file = new StreamReader(openFileDialog1.FileName)) {
    while (!file.EndOfStream) {
      string color = file.ReadLine();
      string name = file.ReadLine();
      string number = file.ReadLine();

      if (color == "blue") {
        listBox1.Items.Add(name);
        listBox2.Items.Add(number);
      }
      else if (color == "red") {
        listBox3.Items.Add(name);
        listBox4.Items.Add(number);
      }
    }  
  }