2011-01-19 59 views
1

我在單個實例的codeproject中找到了以下代碼。MDI單實例C#..如何實現?

frmSChild objfrmSChild = frmSChild.GetChildInstance(); 
objfrmSChild.MdiParent = this; 
objfrmSChild.Show(); 
objfrmSChild.BringToFront(); 

它工作正常。但它只能使用一次。我打開frmSChild 2或3次。它會帶來這種形式。

但是,如果我關閉該表單並再次打開。有一個錯誤,說明cannot detect an exposed ojbect

如何修改代碼以完成它?

回答

3

檢查窗體的IsDisposed屬性,如果屬實,則創建一個新實例。

+0

喜來創建實例

編輯,我查了處理的財產具有的try-catch。我把上面的代碼放在try中,如果發現catch語句,我開始創建一個新表單。對於主窗體可以,但是當第二次關閉子窗體時無法訪問已處理的對象時會彈出異常。 – william 2011-01-19 02:46:48

+0

@william:不要在預期條件下使用try/catch塊;這是不必要的慢。你應該可以檢查`objfrmSChild.IsDisposed`。 – SLaks 2011-01-19 03:04:06