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

本文关键字:表单 一个 然后 另一个 之间 | 更新日期: 2023-09-27 18:35:39

所以我正在尝试学习一两件关于使用 c# 编码的事情,我觉得很烦人的是在表单之间切换的方式。

假设对于一个游戏,你想转到选项面板,当你点击按钮到达那里时,它会关闭该窗口(form1)并为我的应用程序打开一个新窗口(form2)。

像这样打开和关闭窗口看起来不是很好,所以我想知道我能做些什么来让它从 form1 切换到 form2,而无需关闭 form1 而不是在新窗口中打开 form2(一切都在主窗口(form1)上切换)。

听起来可能有点令人困惑,但希望你明白我的意思。

到目前为止,我正在使用的代码在表单之间切换:

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

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

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

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

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

但是,您可以:

  1. 将给定"窗体"上的所有控件分组到PanelGroupBox中,然后显示/隐藏容器控件。

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

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