如何在 C# Winforms 窗体之间转换?
How do I transition between forms C# Winforms?
这似乎是一个相当明显且极其新手的问题(确实如此),但我一直试图在 C# Winforms 中的多种形式之间进行转换,但不知何故设法遇到了许多复杂问题:
- 首先,我使用了显而易见的:
frm_hub hub = new frm_hub();
hub.Show();
然而,每次这段代码 运行,都会创建一个 frm_hub 的新实例并使用 hub.Close();不会工作,因为它没有关闭 frm_hub
的同一个新实例
- 是否有一种方法可以从不同的表单(比如使用全局变量)关闭同一个表单实例?或者有什么方法可以集成 Close();所以整个程序继续运行并显示新表单?
- 作为上述问题的可能解决方案,我尝试将相同的表格存储为变量:
frm_hub hub = new frm_hub();
private void OpenForm()
{
hub.Show()
}
但是 运行 时间错误:'System.WhosebugException:'抛出了 'System.WhosebugException' 类型的异常。'当我尝试使用相同的策略将表单存储为两种表单中的变量时显示。
- 为什么会出现这个错误?有什么办法可以克服它吗?
- 最后,在解决这个问题的一些阅读过程中,我发现了控件和面板的使用,通过这种方式,我可以创建一个界面,在面板中打开不同的不同表单
但是,我对此的尝试需要使用锚点才能使表单远程显示为 Designer 外观
- 如果我不需要调整表单的大小,如何使用面板显示不同的表单,并以一种显示设计元素的方式显示我如何定位它们
再次为我对术语的初学者理解和使用表示歉意,请随时寻求对我可能没有包含的关键细节的澄清哈哈,
谢谢!
我使用了以下内容,不确定这是最佳做法。我使用了一个按钮 ShowFrmHubButton
并在 window 已经显示时将其禁用。
在我的示例中,第二种形式是模态形式,您不能使用第一种形式 window,只要显示第二种形式即可。
ShowFrmHubButton.IsEnabled = false;
var frmHubWindow = new frm_hub ()
{
Owner = this
};
frmHubWindow.ShowDialog();
ShowFrmHubButton.IsEnabled = true;
然后,当您 close\cancel 第二种形式使用 this.Close();
这似乎是一个相当明显且极其新手的问题(确实如此),但我一直试图在 C# Winforms 中的多种形式之间进行转换,但不知何故设法遇到了许多复杂问题:
- 首先,我使用了显而易见的:
frm_hub hub = new frm_hub(); hub.Show();
然而,每次这段代码 运行,都会创建一个 frm_hub 的新实例并使用 hub.Close();不会工作,因为它没有关闭 frm_hub
的同一个新实例- 是否有一种方法可以从不同的表单(比如使用全局变量)关闭同一个表单实例?或者有什么方法可以集成 Close();所以整个程序继续运行并显示新表单?
- 作为上述问题的可能解决方案,我尝试将相同的表格存储为变量:
frm_hub hub = new frm_hub(); private void OpenForm() { hub.Show() }
但是 运行 时间错误:'System.WhosebugException:'抛出了 'System.WhosebugException' 类型的异常。'当我尝试使用相同的策略将表单存储为两种表单中的变量时显示。
- 为什么会出现这个错误?有什么办法可以克服它吗?
- 最后,在解决这个问题的一些阅读过程中,我发现了控件和面板的使用,通过这种方式,我可以创建一个界面,在面板中打开不同的不同表单
但是,我对此的尝试需要使用锚点才能使表单远程显示为 Designer 外观
- 如果我不需要调整表单的大小,如何使用面板显示不同的表单,并以一种显示设计元素的方式显示我如何定位它们
再次为我对术语的初学者理解和使用表示歉意,请随时寻求对我可能没有包含的关键细节的澄清哈哈, 谢谢!
我使用了以下内容,不确定这是最佳做法。我使用了一个按钮 ShowFrmHubButton
并在 window 已经显示时将其禁用。
在我的示例中,第二种形式是模态形式,您不能使用第一种形式 window,只要显示第二种形式即可。
ShowFrmHubButton.IsEnabled = false;
var frmHubWindow = new frm_hub ()
{
Owner = this
};
frmHubWindow.ShowDialog();
ShowFrmHubButton.IsEnabled = true;
然后,当您 close\cancel 第二种形式使用 this.Close();