我有两种形式,其中一种有一个冲击波组件添加到它,它播放一个flash电影,点击一个按钮创建一个按钮形式1(frmFlashIntro)卸载和形式2(frmMain)启动。 因为frmFlashIntro是一个只用一次我想卸载表单而不是隐藏它的表单。我还希望frmMain在frmFlashIntro关闭时完全控制,就好像它是主要形式一样。 隐藏表单似乎不是一个很好的方法来做这件事。
我目前正在做的是我在frmFlashIntro中创建了一个属性,并为它们添加了get和set方法(两者都是blanK)
public Form FormfrmMainRef { get; set; }
我将此代码添加到点击事件中。
frmMain fm = new frmMain();
this.FormfrmMainRef = fm;
FormfrmMainRef.Show();
现在这有效地显示了我的frmMain,但保持frmFlashIntro也在运行,所以我做了这个
frmFlashIntro fi=new frmFlashIntro();
fi.Close();//checked with dispose also
我知道我在最后一步做错了什么。任何人都可以告诉我如何关闭该表格并释放其所拥有的资源。
我也不想使用MDI
答案 0 :(得分:1)
看起来frmMain没有引用原始的frmFlashIntro。你的代码
frmFlashIntro fi=new frmFlashIntro();
fi.Close();//checked with dispose also
实际上会创建第二个frmFlashIntro,所以当你调用fi.Close()时,你实际上是在关闭第二个表单而不是原始表单。
理论上你应该能够在你的frmMain中添加一个属性,它是对frmFlashIntro的引用,然后在那上面调用Dispose,这样就像
frmMain fm = new frmMain(); this.FormfrmMainRef = fm; fm.FormIntroRef = this; FormfrmMainRef.Show();
然后在frmMain的load事件中,添加对FormIntroRef.close()的调用
好的,但是,除此之外,我认为解决此问题的最佳方法是更新Program.cs文件,然后使用
frmFlashIntro flashIntro = new frmFlashIntro
frmFlashIntro.ShowDialog();
frmMain mainForm = new frmMain()
Application.Run(frmMain);
哦,第二个侧面注释,通常,类型以大写字母开头,这些类型的实例以小写字母开头,并且是驼峰式的。所以你通常会有像
这样的东西MainForm frmMain = new MainForm()
那应该达到你想要的结果。
答案 1 :(得分:0)
您是否尝试使用fi.Dispose()处理表单?