2012-10-19 97 views
0

現在我的代碼被設置爲當單擊此按鈕時,它會打開一個選擇文件對話框,並允許用戶選擇要打開的文件。將文件加載到richtextbox

private void button1_Click(object sender, System.EventArgs e) 
     { 
      if (openFileDialog1.ShowDialog() == DialogResult.OK) 
      { 
       richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.RichText); 
      } 
     } 

然而 - 我已經改變了我的程序,使程序簡單地輸出到像這樣一個默認的文件 -

public void CreateInventory(CreateInventory createinventory) 
{ 
    try 
    { 
     FileStream fileStream = new FileStream 
     ("CreateInventory.bin", FileMode.Create, 
     FileAccess.Write); 
     IFormatter formatter = new BinaryFormatter(); 
     formatter.Serialize(fileStream, createinventory); 
     fileStream.Close(); 
    } 
    catch (ItemNotFoundException) 
    { 
     throw new ItemNotFoundException("Output not created - see logs"); 
    } 
} 

如何切換按鈕,使其直接加載該文件,而不是要求用戶選擇要加載的文件?

回答

0

我不完全明白你的問題是什麼,告訴我更多關於你想做什麼。

但我建議改變你的代碼:

public void CreateInventory(CreateInventory createinventory) 
    { 
     try 
     { 
      using (FileStream fileStream = new FileStream("CreateInventory.bin", FileMode.Create, FileAccess.Write)) 
      { 
       IFormatter formatter = new BinaryFormatter(); 
       formatter.Serialize(fileStream, createinventory); 
      } 
     } 
     catch (Exception ex) 
     { 
      throw new ItemNotFoundException("Output not created - see logs", ex); 
     } 
    } 
  1. 你不應該捕捉異常,並重新拋出同樣的異常 - 你失去寶貴的信息(例如堆棧跟蹤)。如果在調用者視圖中該異常不正確,則可以將其包裝,就像我在上面的代碼中那樣。

  2. 放在一個using語句類的一次性(實現IDisposable類)是非常重要的。

爲什麼要使用'使用'?

的一次性類包含非託管資源(在這種情況下,文件句柄),他們不釋放等來管理資源。你完成後應該釋放它。使用具有另一個優點:即使範圍結束或發生異常,它也會爲您調用Dispose()。該文件被釋放,其他進程可能可以訪問該文件。

相關問題