2013-03-07 57 views
-4

我目前正在打開一個文件並在消息框中顯示它。從文件行中按行讀取數據

private void button2_Click_1(object sender, EventArgs e) 
{ 
    //OpenFileDialog1.ShowDialog(); 
    OpenFileDialog file = new OpenFileDialog(); 
    file.FileName = ""; 
    file.Title = "Open A Text document."; 
    file.Filter = "(*.gc)|*.gc|(*.etf)|*.etf|(*.txt)|*.txt|(*.GC)|*.GC|(*.tap)|*.tap"; 
    DialogResult result = file.ShowDialog(); 
    if (result == DialogResult.OK) 
    { 
     System.IO.StreamReader OpenFile = new System.IO.StreamReader(file.FileName); 
     textBox1.Text = OpenFile.ReadToEnd(); 
     OpenFile.Close(); 


    } 

    if (file.FileName.Length > 0) 
    { 
     OpenFile(file.FileName); 
    } 

但我需要逐行閱讀文件並在消息框中顯示它。有沒有辦法改變這段代碼。

+0

你是說你想爲文件中的每一行顯示一個單獨的消息框嗎? – 2013-03-07 15:23:58

+0

使用ReadLine()代替ReadToEnd – VladL 2013-03-07 15:24:27

+0

我想在同一個消息框中顯示 – Sthn 2013-03-07 15:26:06

回答

0

這也正是ReadLine方法是什麼

while (OpenFile.Peek() >= 0) 
{ 
    MessageBox.Show(OpenFile.ReadLine()); 
} 
+0

如何使用這個如果我想使用文本框而不是消息框 – Sthn 2013-03-07 15:38:53

+0

使用'textBox.Text + = OpenFile.ReadLine()'或類似的東西。 – 2013-03-07 15:40:17

0

你試過了OpenFile.ReadLine()方法?


,或者對於更激進的方法

string[] lines = OpenFile.ReadToEnd().Split('\n'); 
2

有一個File.ReadLines方法返回一個IEnumerable,所以你可以這樣做:

foreach(var line in File.ReadLines("myfile.txt")){ 
    //Do stuff with line 
} 
+0

+1不知道ReadLines返回IEnumerable – 2013-03-07 15:28:29

+1

@lazyberezovsky - 在.NET 4.0中有許多微妙的API改進IEnumerable友好IO是其中之一,它是上帝發送的LINQ。 – Josh 2013-03-07 15:44:37

+0

是的,我知道一些(像Directory.EnumerateFiles),但這是我第一次看到ReadLines :) – 2013-03-07 15:48:26

0

來讀取文件中的所有行的最簡單方法是File.ReadAllLines方法(內部它使用StreamReader):

foreach(string line File.ReadAllLines(fileName)) 
    MessageBox.Show(line);