天天看點

Winform下調用ShowDialog()顯示窗體,切記調用Dispose來釋放資源

WinForm下

例如

如果模式窗體顯示一個新視窗

new Form1().ShowDialog()

在From1裡

直接關閉窗體或者處罰Close()并不會真正的關閉窗體,隻是将窗體隐藏而已.

至于原因,如果Close直接銷毀窗體資源的話,那麼必要的時候,擷取DialogResult就無法擷取了.

必須顯示調用Dispose()來關閉窗體.

以下是MSDN的關于模式窗體的備注

可以使用此方法在應用程式中顯示模式對話框。調用此方法時,直到關閉對話框後,才執行此方法後面的代碼。可以将 

DialogResult

 枚舉值之一配置設定給對話框,方法是将該值配置設定給窗體上 Button 的 DialogResult 屬性或通過使用代碼設定窗體的 DialogResult 屬性。此方法随後傳回該值。可以使用此傳回值确定如何處理對話框中發生的操作。例如,如果關閉了對話框,并通過此方法傳回了 

DialogResult.Cancel

 值,則可防止執行在調用 

ShowDialog

 之後的代碼。

當窗體顯示為模式對話框時,單擊“關閉”按鈕(窗體右上角帶 X 的按鈕)會隐藏窗體并将 

DialogResult

 屬性設定為 

DialogResult.Cancel

。與無模式窗體不同,當使用者單擊對話框的關閉窗體按鈕或設定 

DialogResult

 屬性的值時,.NET Framework 不調用 Close 方法。窗體轉而可以隐藏并可重新顯示,而不用建立該對話框的新執行個體。因為未關閉顯示為對話框的窗體,是以在您的應用程式不再需要該窗體時,必須調用該窗體的 Dispose 方法。

ShowDialog

 方法的此版本不将窗體或控件指定為其所有者。當調用此版本時,使目前活動視窗成為該對話框的所有者。如果要指定特定所有者,請使用此方法的其他版本。

Winform下調用ShowDialog()顯示窗體,切記調用Dispose來釋放資源