2014-02-19 19 views
1

這是我的代碼。我似乎無法用我使用StreamReader的方式使用openFileDialog?請任何想法。不能將類型'System.IO.Stream'隱式轉換爲'System.IO.StreamReader

 StreamReader reader = null; 


     OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

     openFileDialog1.InitialDirectory = "c:\\"; 
     openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; 
     openFileDialog1.FilterIndex = 2; 
     openFileDialog1.RestoreDirectory = true; 

     if (openFileDialog1.ShowDialog() == DialogResult.OK) 
     { 
      try 
      { 
       if ((reader = openFileDialog1.OpenFile()) != null) 
       { 
        using (reader) 
        { 
         textBox2.Text = reader.ReadLine(); 
         textBox3.Text = reader.ReadLine(); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); 
      } 
     } 

謝謝。

回答

8

OpenFileDialog.OpenFile() returns a Stream

if ((var stream = openFileDialog1.OpenFile()) != null) 
{ 
    using (reader = new StreamReader(stream)) 
    { 
     // ... 
    } 
} 

或者,這樣你就可以省略手動和醜惡空檢查獲得流以下(它會返回隨時空,或者更確切地說,拋出一個異常?):

using (reader = new StreamReader(openFileDialog1.Filename)) 
{ 
    // ... 
} 
+0

沒有工作我試過 –

+0

沒有工作不是一個錯誤。發生了什麼? – CodeCaster

+0

添加它後沒有改變任何東西我得到了同樣的錯誤。你可以在我的代碼中輸入它如何工作?也許我做錯了什麼 –

相關問題