关闭一个窗体后再打开就会错误,如何解决?

formine 2005-08-25 04:24:11
if ((classRealtimeDashboard == null) )
{
classRealtimeDashboard = new frmRealtimeDashboard();
}
classRealtimeDashboard.Show();
classRealtimeDashboard.BringToFront();//如果已打开,那么直接置最前


frmRealtimeDashboard上的关闭按钮点击后运行this.close();
第一次运行,关闭后,再运行,就会错误。
如果把if ((classRealtimeDashboard == null) )改为if ((classRealtimeDashboard == null)
|| (!classRealtimeDashboard.Created))后就正常。但担心这样会不会不断的在内存创建新的窗体对象?还有Close()不是已经在内存已释放了吗?
...全文
87 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
panjf 2005-08-31
  • 打赏
  • 举报
回复
楼上的,应该是这样吧:
class A:Form
{
public A(ref A _ref)
{
Ref = _ref;
}
A Ref;

public override void OnClose(...)
{
Ref = null;
}
}
JasonHeung 2005-08-25
  • 打赏
  • 举报
回复
class A:Form
{
public A(A _ref)
{
ref = _ref;
}
A ref;

public override void OnClose(...)
{
ref = null;
}
}
panjf 2005-08-25
  • 打赏
  • 举报
回复
用模态窗口吧,在ShowDialog();后加一句classRealtimeDashboard = null;就行了。
panjf 2005-08-25
  • 打赏
  • 举报
回复
对象已经释放了,但引用还是指向原来对象的地址。
formine 2005-08-25
  • 打赏
  • 举报
回复
把this.Close()换成this.Dispose()
或者在this.Close()再加上this.Dispose(),还是会错误。
humin1906 2005-08-25
  • 打赏
  • 举报
回复
this.Dispose()

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧