在c#中的多个窗体之间导航
本文关键字:窗体 之间 导航 | 更新日期: 2023-09-27 18:04:58
我有2个表单,其中一个表单添加了冲击波组件,它播放flash电影,点击flash中创建的按钮,form 1 (frmFlashIntro)卸载,form 2(frmMain)开始。因为frmFlashIntro是一个只使用一次的表单,我想卸载表单而不是隐藏它。我也希望frmMain有完全的控制一旦frmFlashIntro关闭,如果它是主要的形式。隐藏表单似乎不是一个好方法。
我目前正在做的是我在frmFlashIntro中创建了一个属性,并为它们添加了get和set方法(它们都是空白的)
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
看起来frmMain没有对原始frmFlashIntro的引用。你的代码位
frmFlashIntro fi=new frmFlashIntro();
fi.Close();//checked with dispose also
实际上会创建第二个frmFlashIntro,所以当你调用fi.Close()时,你实际上关闭了第二个表单,而不是原来的表单。
理论上你应该可以在你的frmMain中添加一个属性这是对frmFlashIntro的引用,然后对它调用Dispose比如
frmMain fm = new frmMain();这一点。FormfrmMainRef = fm;调频。formmintroref = 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()
这应该达到你想要的结果。
是否尝试使用fi.Dispose()处理表单?