Когда вы делаете следующее:
MainMenuForm frmMainMenu = new MainMenuForm();
frmMainMenu.Show();
Вы создаете и показывает новый экземпляр MainMenuForm.
Чтобы показать и скрыть экземпляр MainMenuForm, вам нужно будет на него сослаться. То есть когда я делаю приложения для компактных фреймворков, у меня есть статические классы, использующие шаблон синглтона, чтобы гарантировать, что у меня только один экземпляр формы во время выполнения:
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 (спасибо Lazarus за ссылку) - хороший способ управления формами в приложениях 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();
}
}
UPDATE:
Просто прочитайте, что MainMenuForm
это ваша форма запуска. Реализуйте класс, похожий на мой пример синглтона выше, а затем измените свой код на следующий в файле Program.cs вашего приложения:
Application.Run(FormProvider.MainMenu);
Затем вы можете получить доступ к MainMenuForm
из любой точки вашего приложения через класс FormProvider
.