如何在 C# Winforms 窗体之间转换?

How do I transition between forms C# Winforms?

这似乎是一个相当明显且极其新手的问题(确实如此),但我一直试图在 C# Winforms 中的多种形式之间进行转换,但不知何故设法遇到了许多复杂问题:

  1. 首先,我使用了显而易见的:
frm_hub hub = new frm_hub();
hub.Show();

然而,每次这段代码 运行,都会创建一个 frm_hub 的新实例并使用 hub.Close();不会工作,因为它没有关闭 frm_hub

的同一个新实例
  1. 作为上述问题的可能解决方案,我尝试将相同的表格存储为变量:
frm_hub hub = new frm_hub();
private void OpenForm()
{
    hub.Show()
}

但是 运行 时间错误:'System.WhosebugException:'抛出了 'System.WhosebugException' 类型的异常。'当我尝试使用相同的策略将表单存储为两种表单中的变量时显示。

  1. 最后,在解决这个问题的一些阅读过程中,我发现了控件和面板的使用,通过这种方式,我可以创建一个界面,在面板中打开不同的不同表单

但是,我对此的尝试需要使用锚点才能使表单远程显示为 Designer 外观

再次为我对术语的初学者理解和使用表示歉意,请随时寻求对我可能没有包含的关键细节的澄清哈哈, 谢谢!

我使用了以下内容,不确定这是最佳做法。我使用了一个按钮 ShowFrmHubButton 并在 window 已经显示时将其禁用。

在我的示例中,第二种形式是模态形式,您不能使用第一种形式 window,只要显示第二种形式即可。

ShowFrmHubButton.IsEnabled = false;
var frmHubWindow = new frm_hub ()
{
    Owner = this
};

frmHubWindow.ShowDialog();
ShowFrmHubButton.IsEnabled = true;

然后,当您 close\cancel 第二种形式使用 this.Close();