2013-02-04 51 views
0

我是新來的c#,我有一個問題,可能有一個非常簡單的解決方案。我想導入一個.txt文件以便查看文本框並保持原始文件的格式(所有正確的間距)。這可能嗎?當用戶單擊按鈕並顯示文件時,我正在使用以下代碼打開.txt文件。再次,我對編程非常陌生,任何幫助都將不勝感激。顯示.txt文件時保持格式

OpenFileDialog ofd = new OpenFileDialog(); 

ofd.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 

if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
{ 
    StreamReader sr = File.OpenText(ofd.FileName); 
    string s = sr.ReadLine(); 
    StringBuilder sb = new StringBuilder(); 
    while (s != null) 
    { 
     sb.Append(s); 
     s = sr.ReadLine(); 
    } 
    sr.Close(); 
    textBox1.Text = sb.ToString(); 
} 
+2

爲什麼空間會消失?使用'ReadToEnd'而不是逐行閱讀和字符串生成器更容易。這將您的代碼變成兩個班輪。我想你也需要一個「使用」。 –

+1

你現在的代碼有什麼問題? – Blachshma

+0

你的文本框的大小是多少?以及文本文件中的最大行長度是多少? –

回答

2

我認爲,你應該使用的

sb.AppendLine(); 

代替sb.Append();

現在,你可以(應該)也使用ReadToEnd(),由大衛·赫弗南的建議。

using(StreamReader sr = File.OpenText(ofd.FileName)) { 
    textBox1.Text = sr.ReadToEnd(); 
} 
+0

太棒了!我取代了sb.Append();與sb.AppendLine();按照建議,我得到了我正在尋找的結果。非常感謝你。 – user2029074

1

我相信你是這樣想的。沒有必要使用循環,並且框架已經提供了完全按照您的要求進行的便利方法。

我會寫這樣的代碼:

using (StreamReader sr = new StreamReader(ofd.FileName)) 
{ 
    textBox1.Text = sr.ReadToEnd(); 
} 

我猜你的有關保留的間距是由一個事實,即你的循環不會保留換行符動機問題。這是使用內置框架的另一個原因。讓它承受緊張並獲得正確的細節。

+0

謝謝你們的幫助。 sb.AppendLine();和 使用(StreamReader sr = new StreamReader(ofd.FileName)) { textBox1.Text = sr.ReadToEnd(); } 給了我想要的結果。 – user2029074

+0

好。在你的程序中選擇使用哪種解決方案應該是顯而易見的! –