c# - 打开新表单,在编译和处理 ObjectDisposedException 时不知道它的 System.Type
问题描述
在使用 Windows 关闭按钮关闭其中一个表单后尝试阻止 ObjectDisposedException 时,我遇到了问题。
我有一个负责打开表单的方法,它一直有效,直到我试图打开“已处置”的表单,所以我尝试使用 try-catch 块来处理它,但仍然无法显示如何显示之后形成。
public void FormCheck (Form form)
{
bool isOpen = false;
FormCollection fc = Application.OpenForms;
foreach (Form frm in fc)
{
if (frm.Name == form.Name)
{
form.Focus();
isOpen = true;
break;
}
}
if (isOpen == false)
{
try
{
form.Show();
}
catch(ObjectDisposedException)
{
Type formType = form.GetType();
object instance = Activator.CreateInstance(formType);
form.Show();
}
}
}
解决方案
假设您从未将 null 传递给该方法(您也可以检查它):
public void FormCheck(Form form)
{
foreach (Form frm in Application.OpenForms)
{
if (frm.Name == form.Name)
{
form.Focus();
return;
}
}
if (!form.IsDisposed)
{
form.Show();
}
else
{
((Form)Activator.CreateInstance(form.GetType())).Show();
}
}
推荐阅读
- wso2 - java.lang.ClassCastException:java.util.ArrayList 无法转换为 org.wso2.carbon.apimgt.impl.dto.VerbInfoDTO
- javascript - 如何从输入中获取图像的正确位置并使用 javascript 显示它?
- apache - 使用“.conf”文件使所有子域指向单个文件/文件夹
- pymongo - 'NoneType' 对象不可下标 pymongo
- javascript - 重置倒计时
- javascript - Merge multiple object values of array into 1
- foreach - ForEach 和 GeometryReader:儿童的可变高度?
- html - 关于 React js 的问题,但我不知道怎么问?
- pandas - 如何使用fuzzywuzzy将pandas列中的相似字符串合并在一起
- python - 如何找到 2 个列表的索引并根据它们的索引将它们合并为一个?