|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
J2EE比较成熟一点,一些比较出名的企业应用软件都是基于J2EE的。以后的发展就不好说了。不过java比较烦,学.net的话,微软把很多工具都封装好了,学起来可能容易一点。假如不必MDI来完成一个主窗体翻开多个子窗体时,
从一个窗体(主窗体)翻开一个(onlyone)别的一个的窗体(子窗体)的完成
父窗体:MainForm
publicpartialclassMainForm:Form
{
............
privatevoidmenuItem1_Load(objectsender,EventArgse)
{
ChildFormchild1=ChildForm.Create();
child1.show();
child1.Focus();
}
//......
}
子窗体:ChildForm
publicpartialclassChildForm:Form
{
.....
staticChildFormchild;
PublicstaticChildFormCreate()
{
if(child==null)
child=newChildForm();
returnChild;
}
......
}
F5运转后,切实其实完成了下面提到的功效。但是,把子窗体封闭后,想再次翻开该子窗体时,单击菜单项,会呈现非常:ObjectDisposedExceptionwasunhandled.
这是为何呢??
这里触及到C#渣滓接纳的成绩:
渣滓接纳是.NET运转库的一部分。渣滓接纳器办理一切的托管工具,一切必要托管数据的.NET言语(包含C#)都受运转库的渣滓接纳器的制约。渣滓接纳器能够断定运转渣滓接纳的最好工夫,主动举行渣滓接纳。但是渣滓接纳的一个产品是:C#工具没有断定性损坏。以是会呈现工具child已被烧毁,但又不为null,会见时发生ObjectDisposedException非常。
怎样办??
办法:应当完全接纳Child所占的资本。
路子有二:
办法一:
修正子窗体的机关函数
publicChildForm()
{
//.........
this.Disposed+=newSystem.EventHandler(Form_Disposed)
}
然后事务Form_Disposed的处置函数
privatevoidForm_Disposed(objectsender,EventArgse)
{
Child=null;
}
办法二:
重写ChildForm的OnClosed办法
ProtectedvoidOnClosed(EventArgse)
{
base.OnClosed(e);
child=null;
}
固然大概有其他的办法,列位看客有乐趣的话增补一下。别的有叙说不妥的中央,请多多指教,鄙人感激涕零。
Java欺骗了我们那么多年,如今的多核时代,我认为它气数已尽! |
|