我如何显示已隐藏使用的内容
this.Hide();
Run Code Online (Sandbox Code Playgroud)
我试过了
MainMenuForm.Show();
Run Code Online (Sandbox Code Playgroud)
这只是说我需要一个对象参考.然后我尝试了:
MainMenuForm frmMainMenu = new MainMenuForm();
frmMainMenu.Show();
Run Code Online (Sandbox Code Playgroud)
这似乎表明了适当的形式.但是当你退出应用程序时,它仍然保留在内存中,因为它没有显示隐藏的表单,而是显示了表单的新版本.实际上有2个表格实例(一个隐藏,一个可见).
只是为了澄清,MainMenuForm是启动形式.单击(例如)单击选项1时,MainMenuForm会在打开选项1表单时隐藏自身.我想知道的是如何制作MainMenuForm打开的选项1表单"取消隐藏"MainMenuForm然后关闭它自己.
这里的正确程序是什么?
提前致谢.
djd*_*d87 20
执行以下操作时:
MainMenuForm frmMainMenu = new MainMenuForm();
frmMainMenu.Show();
Run Code Online (Sandbox Code Playgroud)
您正在创建并显示MainMenuForm 的新实例.
为了显示和隐藏MainMenuForm的实例,您需要保存对它的引用.即当我做紧凑框架应用程序时,我有一个使用单例模式的静态类,以确保我在运行时只有一个表单实例:
public class FormProvider
{
public static MainMenuForm MainMenu
{
get
{
if (_mainMenu == null)
{
_mainMenu = new MainMenuForm();
}
return _mainMenu;
}
}
private static MainMenuForm _mainMenu;
}
Run Code Online (Sandbox Code Playgroud)
现在您可以使用它FormProvider.MainMenu.Show()来显示表单并FormProvider.MainMenu.Hide()隐藏表单.
该Singleton模式(感谢拉撒路的链接)是管理中的WinForms应用形式,因为它意味着你只有一次创建表单实例的好方法.第一次通过其各自的属性访问表单时,表单被实例化并存储在私有变量中.
例如,第一次使用时FormProvider.MainMenu,将实例化私有变量_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();
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
刚看完那MainMenuForm是你的创业形式.实现类似于上面的单例示例的类,然后在应用程序的Program.cs文件中将代码更改为以下内容:
Application.Run(FormProvider.MainMenu);
Run Code Online (Sandbox Code Playgroud)
然后,您可以MainMenuForm通过FormProvider课程从应用程序中的任何位置访问.