我如何显示已使用隐藏的来源
this.Hide();
我试过了
MainMenuForm.Show();
这只是说我需要一个对象引用。然后我尝试了:
MainMenuForm frmMainMenu = new MainMenuForm();
frmMainMenu.Show();
这似乎显示了适当的形式。但是当您退出应用程序时,它仍然保留在内存中,因为它没有显示隐藏的表单,而是显示了表单的新版本。实际上有 2 个表单实例(一个隐藏,一个可见)。
澄清一下,MainMenuForm 是启动窗体。当(例如)单击选项 1 时,MainMenuForm 然后在打开选项 1 窗体时隐藏自身。我想知道的是如何制作 MainMenuForm 打开的选项 1 表单“取消隐藏”MainMenuForm,然后自行关闭。
这里的正确步骤是什么?
提前致谢。
最佳答案
当您执行以下操作时:
MainMenuForm frmMainMenu = new MainMenuForm();
frmMainMenu.Show();
您正在创建并显示 MainMenuForm 的新实例。
为了显示和隐藏 MainMenuForm 的实例,您需要持有对它的引用。 IE。当我做紧凑型框架应用程序时,我有一个使用单例模式的静态类,以确保我在运行时只有一个表单实例:
public class FormProvider
{
public static MainMenuForm MainMenu
{
get
{
if (_mainMenu == null)
{
_mainMenu = new MainMenuForm();
}
return _mainMenu;
}
}
private static MainMenuForm _mainMenu;
}
现在您只需使用 FormProvider.MainMenu.Show()
来显示表单,使用 FormProvider.MainMenu.Hide()
来隐藏表单。
Singleton Pattern (感谢 Lazarus 的链接)是在 WinForms 应用程序中管理表单的好方法,因为这意味着您只需创建一次表单实例。第一次通过其各自的属性访问表单时,表单被实例化并存储在私有(private)变量中。
例如,第一次使用FormProvider.MainMenu
时,实例化了私有(private)变量_mainMenu。随后您调用 FormProvider.MainMenu
时,_mainMenu 会立即返回,而不会再次实例化。
但是,您不必将所有表单类都存储在静态实例中。您可以将表单作为控制 MainMenu 的表单的属性。
public partial class YourMainForm : Form
{
private MainMenuForm _mainMenu = new MainMenuForm();
protected void ShowForm()
{
_mainMenu.Show();
}
protected void HideForm()
{
_mainMenu.Hide();
}
}
更新:
只需阅读 MainMenuForm
就是您的启动表单。实现一个类似于我上面的单例示例的类,然后在应用程序的 Program.cs 文件中将代码更改为以下内容:
Application.Run(FormProvider.MainMenu);
然后,您可以通过 FormProvider
类从应用程序的任何位置访问 MainMenuForm
。
关于c# - 显示隐藏表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3005732/