使用下面的代码打开子窗口,一切正常:
//打开单例窗口
Form test = Application.OpenForms[wn]; //查找是否打开过窗体
if ((test == null) || (test.IsDisposed)) //如果没有打开过
{
Assembly assembly = Assembly.GetExecutingAssembly();
Form F;
F = assembly.CreateInstance("main." + wn) as Form;
F.Owner = this;
F.Show(); //打开子窗体
}
else
{
test.Activate(); //如果已经打开过就让其获得焦点
test.WindowState = FormWindowState.Normal;//使Form恢复正常窗体大小
}
但是我把子窗口继承了cskin后,使用上面的代码打开子窗口,如果子窗口如Form1 load判断没记录,写了一个最简单的Close(); 正常是关闭窗体了,但是只要子窗体继承cskin,并且碰到Close();这个关闭窗口的代码,那么会报错,提示无法打开已释放的对象?
但是:如果我把子窗口如Form1,去掉那行Close();关闭窗口的代码,给它加上一个自动倒计时1秒自动关闭(到了时间后依然执行的还是Close)它就不会报错,似乎是要让子窗口展示出来看一下,才可以关闭……
这个怎么破
|