获取对象的处置状态

时间:2014-07-03 18:55:23

标签: c# winforms

我不知道这是否是最好的方法,但我尝试创建一个表单,该表单将在我的应用中为我的所有其他表单创建一个父表单,并检查是否有实例它(实际上它的孩子)是开放的。这个想法是在实例化和打开新表单时最小化拥有表单中的代码量。我的父表单中的代码运行良好,构造函数检查Application.OpenForms是否包含其类型的实例并将其自身关闭为true,因此我此时不会发布它。 问题是在拥有表单中执行Show()方法。 如果找到副本,此代码(显然)不起作用

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

因为表格对象已经被处理掉了。 但这也不起作用:

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

正确的方法是检查表格是否处理,以便我寻找足以满足这种条件的财产:

if( state of form is Disposed)

所以问题是:是否有允许此测试的属性?

现在,我可以使用事件处理程序来处理异常处理程序tp,但这会与开头的主要statet相矛盾 - 限制打开表单所需的代码。

1 个答案:

答案 0 :(得分:2)

您可以随时查看IsDisposed属性,但如果您只是创建了表单,则永远不会这样。如果你在构造函数中调用Dispose,那么你将会制作一个非常奇怪,难以使用的API。

一般情况下,我建议您先检查是否应创建表单,然后创建并显示是否合适。这将与其他开发人员(可能是您自己)的期望相匹配。