2012-04-21 67 views
0

我想對按鈕單擊事件進行測試循環。當我點擊這個按鈕時,它讀取文本文件的內容,但是我希望它彈出一個顯示「無法讀取文件」的錯誤消息,如果它不是文本文件.... 這是我的代碼使用StreamReader和文本文件

private void button3_Click(object sender, EventArgs e) 
{ 
    StreamReader sr = new StreamReader(textBox1.Text); 
    richTextBox1.Text = sr.ReadToEnd(); 
    sr.Close(); 
} 

我該怎麼辦?

+1

你的意思是顯示一個錯誤,如果文本文件不存在?在這種情況下,您需要在創建新的流讀取器之前首先檢查文件是否存在。一般來說,你的問題不是很理解。 – 2012-04-21 15:39:38

+0

不,我的意思是,如果該文件不可讀因爲如果我運行按鈕它顯示的文本文件在richtextbox的內容,但如果我嘗試打開一個doc文件,它不能顯示richtextbox上的內容 – 2012-04-21 15:45:59

回答

1

不是最好的代碼,但它應該工作。理想情況下,您可以將邏輯分爲兩種方法,一種是檢查文件是否存在,另一種是文本文件(返回布爾值),另一種是在檢查函數返回true時讀取內容並用內容填充文本框。

編輯:這是更好的:

private void button3_Click(object sender, EventArgs e) 
    { 
     string filePath = textBox1.Text; 
     bool FileValid = ValidateFile(filePath); 

     if (!IsFileValid) 
     { 
      MessageBox.Show(string.Format("File {0} does not exist or is not a text file", filePath)); 
     } 
     else 
     { 
      textbox2.Text = GetFileContents(filePath); 
     } 
    } 

    private bool IsFileValid(string filePath) 
    { 
     bool IsValid = true; 

     if (!File.Exists(filePath)) 
     { 
      IsValid = false; 
     } 
     else if (Path.GetExtension(filePath).ToLower() != ".txt") 
     { 
      IsValid = false; 
     } 

     return IsValid; 
    } 

    private string GetFileContents(string filePath) 
    { 
     string fileContent = string.Empty; 

     using (StreamReader reader = new StreamReader(filePath)) 
     { 
      fileContent = reader.ReadToEnd(); 
     } 

     return fileContent; 
    } 
+0

對不起,一個錯誤與他的代碼我想寫stramreader我只是編輯代碼 – 2012-04-21 15:49:53

+0

相應地更新。 – 2012-04-21 16:01:02

+0

即時通訊代碼錯誤 – 2012-04-21 16:15:13

2

幾個if語句和命名空間System.IO會做

string filename = textBox1.Text; 
if (Path.GetExtension(filename).ToLower()) == ".txt") { 
    if (File.Exists(filename)) { 
     // Process the file here 
    } else { 
     MessageBox.Show("The file does not exist"); 
    } 
} else { 
    MessageBox.Show("Not a text file"); 
} 
相關問題