2017-09-06 88 views
0

比方說,我有一些文本文件,我想在列表框中逐行加載行,省略此文件中的第一行和最後一行。可以這樣做嗎?如何從文件中添加指定項目到列表框?

enter image description here

private void metroButton18_Click(object sender, EventArgs e) 
    { 
     OpenFileDialog f = new OpenFileDialog(); 
     if (f.ShowDialog() == DialogResult.OK) 
     { 
      listBox3.Items.Clear(); 

      List<string> lines = new List<string>(); 
      using (StreamReader sr = new StreamReader(f.OpenFile())) 
      { 
       string line; 
       while ((line = sr.ReadLine()) != null) 
       { 
        listBox3.Items.Add(line); 
       } 
      } 
     } 
    } 

感謝您的幫助。

+0

,你可以讀取行列表,然後省略第一和最後一個索引。 –

回答

3

使用File.ReadAllLines Method,並跳過循環的第一和最後一個索引:

var path = @"C:\temp\MyTest.txt"; 
var allLines = File.ReadAllLines(path); 

for(var i = 1; i < allLines.Length - 1; i++) 
{ 
    listBox3.Items.Add(allLines[i]); 
} 

使用OpenFileDi alog打開文件:

OpenFileDialog f = new OpenFileDialog(); 
if (f.ShowDialog() == DialogResult.OK) 
{ 
    listBox3.Items.Clear(); 

    var allLines = File.ReadAllLines(f.FileName); 
    for(var i = 1; i < allLines.Length - 1; i++) 
    { 
     listBox3.Items.Add(allLines[i]); 
    } 
} 
1

閱讀外循環第一行:

line = sr.ReadLine(); 
while ((line = sr.ReadLine()) != null) 
{ 
    listBox3.Items.Add(line); 
} 

完成從文件中讀取後,只是刪除最後一個項目:

listBox3.Items.RemoveAt(listBox3.Items.Count); 
1

這是怎麼回事?

OpenFileDialog f = new OpenFileDialog(); 
if (f.ShowDialog() == DialogResult.OK) { 
    listBox1.Items.Clear(); 
    List<string> lines = new List<string>(); 
    using (StreamReader sr = new StreamReader(f.OpenFile())) { 
      string line; 
      while ((line = sr.ReadLine()) != null) { 
       lines.Add(line); // add lines to list first 
      } 
    } 
    string[] resultArray = lines.Skip(1).Reverse().Skip(1).Reverse().ToArray(); 
//skip first one , reverse so last one is the first now, skip again and reverse again to get actual list 
    listBox1.Items.AddRange(resultArray); 
} 

希望幫助,

+0

雖然這是好的答案,但對我來說看起來太複雜了。在這種情況下,你也可能想把行作爲'string []'類型,轉換'ToArray()'並使用'listBox1.Items.AddRange()'方法。 – Reniuz

+0

OP定義的行如列表我也是。你在說這個嗎?請參閱編輯。 @Reniuz – Berkay

+0

是的。 [Items.Add](https://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.objectcollection(v = vs.110).aspx)不接受字符串列表作爲參數。那麼它接受,但你可能會在列表框中獲得只有一個項目與列表#'在其中輸入信息。 – Reniuz

相關問題