2011-05-20 55 views

回答

6

當FormB關閉時(使用.Close方法)它將被丟棄,因此您不需要手動調用.Dispose方法。

+0

如果什麼用戶關閉FORMA(點擊X按鈕在右上角),但不關閉FormB?所有資源是否會被釋放? – 2011-05-20 15:44:50

0

當FormB通過點擊其中它只是隱藏它不設置在X或其他possiblities關閉。如果這種情況經常發生,那麼在FormA或應用程序退出時處理它。如果該表單沒有經常打開,您甚至可以在按鈕的click-event-handler中進行處理。那裏有關於using的關鍵字。

using(FormB b = new FormB()) 
{ 
    if(b.ShowDialog() == DialogResult.OK) {...} else {...} 
} 

當然這隻有當它顯示爲模態時纔可能。

0
protected override void Dispose(bool disposing) 
     { 
      if (disposing && (components != null)) 
      { 
       components.Dispose(); 
      } 
      base.Dispose(disposing); 
     } 

您可以在表單designer.cs看到這個文件時,窗體關閉所以沒有必要擔心它會被稱爲關於處置

0

from msdn

兩個條件,當窗體不 設置在關閉是當(1)它是一個多文檔界面 (MDI)應用的 部分,和形式沒有 可見;和(2)您使用ShowDialog顯示了 表單。在這些 情況下,您將需要調用Dispose手動 ,以紀念所有形式的 控制的垃圾收集。

這是更好用的使用方法:

using (var modalForm = new FormB()) 
{ 
    modalAddUser.ShowDialog(); 
}