Как снова показать форму после ее скрытия?

Вопрос:У меня две формы. Мне нужно открыть вторую форму с помощью кнопки. Когда я открываю форму2, я скрываю форму1. Однако, когда я пытаюсь показать форму1 снова из формы2 с помощью кнопки, она не работает. Мой код form1: Form2 form2 = new Form2(); form2.ShowDialog(); Код внутри формы2: Form1.ActiveForm.ShowDialog(); или Form1.ActiveForm.Show(); или form1.show(); (form1 doesn't exist in

Вопрос:

У меня две формы. Мне нужно открыть вторую форму с помощью кнопки. Когда я открываю форму2, я скрываю форму1. Однако, когда я пытаюсь показать форму1 снова из формы2 с помощью кнопки, она не работает. Мой код form1:

Form2 form2 = new Form2(); form2.ShowDialog();

Код внутри формы2:

Form1.ActiveForm.ShowDialog();

или

Form1.ActiveForm.Show();

или

form1.show(); (form1 doesn’t exist in the current context)

не работает.
Я не хочу открывать новую форму

Form1 form1 = new Form1(); form1.ShowDialog();

Я хочу показать форму, которую я раньше скрывал.
В качестве альтернативы я могу свести его к панели задач

this.WindowState = FormWindowState.Minimized;

и снова увеличить его от формы2.

Form2.ActiveForm.WindowState = FormWindowState.Maximized;

однако способ, которым я пытаюсь снова, не работает.
Что не так с этими способами?

Лучший ответ:

Вы можете попробовать (при нажатии кнопки Form1)

Hide(); Form2 form2 = new Form2(); form2.ShowDialog(); form2 = null; Show();

или (он должен работать)

Hide(); using (Form2 form2 = new Form2()) form2.ShowDialog(); Show(); Ответ №1

Сохраните экземпляр Form1 и используйте его для Show или Hide.

Ответ №2

Вы можете получить доступ к Form1 из Form2 через свойство Owner, если вы покажете form2 следующим образом:

form2.ShowDialog( form1 )

или вот так:

form2.Show( form1 )

Обратите внимание на то, что вы не вынуждены использовать ShowDialog. Скрыть и показать логику можно перемещать внутри Form2

Ответ №3

Этот метод является тем, который я считаю лучшим для меня.

Первичная форма

Form2 form2 = new Form2(this);

Вторичная форма

private Form Form1 public Form2(Form Form1) { InitializeComponent(); this.Form1 = Form1; Form1.Hide(); }

Позднее при закрытии

private void btnClose_Click(object sender, EventArgs e) { Form1.Show(); this.Close(); }

Оцените статью
Добавить комментарий