2014-07-03 22 views
1

我不知道這是否是這樣做的最好方法,但我試圖創建一個表單,它將在我的應用程序中爲所有其他表單創建一個父表單,並將檢查是否它的一個實例(實際上是它的孩子)是開放的。這個想法是在實例化和打開新表單時最小化擁有表單的代碼量。我父窗體中的代碼運行良好,構造函數檢查Application.OpenForms是否包含其類型的實例並將其自身關閉,因此我現在不打算髮布它。 問題是在擁有窗體中執行Show()方法。 此代碼將無法正常工作(明顯),如果重複發現獲取一個對象的處置狀態

FormA form = new FormA(); 
form.Show(); 

因爲表單對象應該已經處理完畢。 但是,這並不工作,也:

FormA form = new FormA(); 
if(form != null) 
form.Show(); 

正確的方法是檢查是否樣式設置,所以我正在尋找這就夠了這個條件屬性:

if(state of form is Disposed) 

所以問題:有沒有一個屬性可以允許這個測試?

現在,我可以使用事件處理程序來處理異常處理程序tp,但這會違反原則在開始階段 - 限制打開窗體所需的代碼。

+0

恐怕不是(對於所有的IDisposable),除非你公開一些額外的數據或將它清空。 –

+0

@ DanielA.White雖然碰巧有Windows窗體控件(和窗體),但是:) –

回答

2

您可以隨時查看IsDisposed屬性,但如果您只是創建了表單,則該屬性永遠不會變爲true。如果您在構造函數中調用Dispose,那麼您將製作一個非常奇怪,難以使用的API。

一般來說,我建議檢查您是否應該先創建表單,然後創建並顯示它是否合適。這會匹配其他開發人員(以及可能自己)的期望。

+0

它實際上工作! – ArtK

相關問題