切换表单(关闭一个表单,然后打开另一个表单)

时间:2014-12-30 20:03:26

标签: c# winforms

所以我试图学习一两件关于使用c#进行编码的事情以及我觉得非常烦人的是在表单之间切换的方法。

让我们说你想要进入选项面板的游戏,当你点击按钮到达那里它关闭那个窗口(form1)并为我的应用程序打开一个新窗口(form2)。

打开和关闭窗口看起来并不是很好看所以我想知道我能做什么才能让它从form1切换到form2而不关闭form1而不打开form2窗口(所有东西都在主窗口上打开(form1)。

听起来有点令人困惑,但希望你理解我的意思。

我目前使用的代码在表单之间切换:

   ChangeOptions optionchanger = new ChangeOptions ();
   this.Hide();
   optionchanger.Show();

2 个答案:

答案 0 :(得分:2)

您可以将两个面板添加到单个表单中,每个表单都包含您可能已添加到两个表单之一的控件。然后通过更改其可见性或Z顺序在面板之间切换。这在Windows窗体设计器中有点棘手,因为您必须设计两个面板,然后将它们放在包含表单上的相同位置。

正如@ryanyuyu指出的那样,您可以将Dock属性设置为DockStyle.Fill,并使用Control.BringToFrontControl.SendToBack()切换哪个面板位于顶部。这也是与设计器中两个面板进行交互的一种不错的方式,因为您可以从上下文菜单选项切换到顶部。

答案 1 :(得分:1)

要真正拥有两种形式,您唯一的选择就是显示一个对话框。隐藏当前窗口当然是可选的。

但是,您可以:

  1. 将给定"形式的所有控件分组"进入PanelGroupBox,然后显示/隐藏容器控件。

  2. 将所有控件放入UserControl,并在主窗体上放置每个UserControl的实例。然后,您可以显示/隐藏控件。

  3. 我更喜欢第二种方法,因为它使封装更紧密。由于您已经有两种形式,因此很容易转换为用户控件。