gpt4 book ai didi

c# - 显示隐藏表格

转载 作者:可可西里 更新时间:2023-11-01 08:55:28 24 4
gpt4 key购买 nike

我如何显示已使用隐藏的来源

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com