Вопрос:
У меня две формы. Мне нужно открыть вторую форму с помощью кнопки. Когда я открываю форму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(); }