2009-02-22 67 views
1

說我想打開一個新的形式..C#的好方法來關閉窗體

TestForm test = new TestForm(); 

什麼是關閉它的好辦法嗎?更確切地說,只是調用close()好嗎? 我應該使用using(){}如此dispose()被調用嗎?最後,假設有一個對話框,該對話框應該只打開一個對話框的實例,是否有 以及「已知」模式?我有不同的選擇,如將其存儲在一個靜態字段, 和空值「ing」的它,當它被關閉..

感謝

+0

如果在上下文中爲你的作品,我會建議總是試圖與形式使用使用模式。 – 2009-02-22 01:16:24

回答

1

就單一實例對話框而言(如果它是模態的,您不必擔心),您可以使構造函數爲私有,並提供一個公共靜態方法來訪問該窗體。

public class MyForm : Form 
{ 
    protected MyForm() 
    { 
    } 

    protected int MyValue { get; set; } 

    public static int GetResult() 
    { 
     using(MyForm myForm = new MyForm()) 
     { 
      if(myForm.ShowDialog == DialogResult.OK) 
       return myForm.MyValue; 
     } 
     return -1; 
    } 
} 

這將迫使呼叫通過的形式..

int someValue = MyForm.GetResult(); 
4

它是使用using每當對象實現IDisposable好習慣。這將只有一個模態對話框工作:

using (TestForm test = new TestForm()) 
{ 
    .... 
} 

這句法相當於一個try{}finally{}塊,所以即使有異常的大括號內拋出,Dispose()將您的對象上調用。

+0

這個模式非常棒,除了窗口將無用,因爲它在任何事情都可以完成之前會消失,因爲它的消息循環永遠不會旋轉。 – 2009-02-22 01:35:01