c#从文件读入数组并添加到列表框中

时间:2018-04-16 12:39:14

标签: c#

所以这是我坚持的大学任务的一部分,我要创建一个媒体播放器,我正在努力的代码应该从.txt文件读入数组,然后它应该读取将标题跟踪到名为Lst_genre的列表框中,我的代码到目前为止如下(我对网站很新,所以如果我需要放其他东西,请告诉我。)

private void Form1_Load(object sender, EventArgs e)
{
      string[] readFromfile = File.ReadLines("filepathgoeshere").ToArray();
      ListBox listBox1 = new ListBox();
      // add items 
      Lst_Genre.Items.Add(readFromfile);
      // add to controls 
      Controls.Add(listBox1);
}

文本文件的格式如下

2
hip hop // i am wanting this to the textbox
eminem- without me.mp3 // both mp3 files should show in Lst_genre
eminem- lose yourself.mp3

类型名称也应该在上面的文本框中读取,但此刻我更关注音轨名称。如果有人能提供一些意见,那将是很好的,因为我目前正处于亏损状态。

1 个答案:

答案 0 :(得分:3)

您必须先提取数据:

var readFromFile = File
  .ReadLines("filepathgoeshere")
  .Skip(1)                                                  // Skip title 
  .Select(line => line.Substring(0, line.LastIndexOf(' '))) // get genre (not number) 
  .ToArray();                                               // we want an array

然后添加所有项目:AddRange

Lst_Genre.Items.AddRange(readFromfile);

编辑1 :据我所知,

  

我的列表框上方有一个文本框来保存流派名称和   列表框应该包含我的曲目名称

我们实际上必须为两个控件提供数据:

var allLines = File
  .ReadAllLines("filepathgoeshere");

然后

// Top Line: genre name
myTextBox.Text = allLines[0]; 

// tracks
Lst_Genre.Items.AddRange(allLines
  .Skip(1)   // Here we skip top line (genre name?)
  .Select(line => line.Substring(0, line.LastIndexOf(' ')))
  .ToArray());

编辑2 :根据提供的示例:

var allLines = File
  .ReadAllLines("filepathgoeshere");

// Genre name is the second line (top one is id which we skip)
myTextBox.Text = allLines[1]; 

// in case you want to clear existing control, not creating a new one. 
Lst_Genre.Items.Clear();

// Tracks
Lst_Genre.Items.AddRange(allLines
  .Skip(2)     // Here we skip tow lines (id and genre name)
  .ToArray());