2011-01-19 100 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