在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

在c#中的多个窗体之间导航

看起来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()处理表单?