2016-05-21 3 views
-1

Helo, У меня есть 2 формы: form1 и form2. Когда я нажимаю кнопку в форме1, я хочу открыть form2 и form1, чтобы быть все еще видимым.C# hide form2 и повторно открыть его без переопределения

код в Form1:

private void button_Click_1(object sender, EventArgs e) 
{ 
form2 form = new form2(); 
form.Show(); 
} 

При нажатии [х] (кнопки закрытия) в form2, я хочу, чтобы скрыть его.

код в form2:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason == CloseReason.UserClosing) 
    { 
     e.Cancel = true; 
     Hide(); 
    } 
} 

Проблема заключается в том, когда я нажимаю снова button1 от form1. Он открывает form2, но, как будто он не был скрыт, он открывается, как в первый раз. Я не хочу закрывать form2, потому что это таймер, который подсчитывает, пока форма скрыта. Как я могу скрыть form2, когда я нажимаю [x], а затем, когда я снова нажимаю кнопку 1, чтобы снова появиться, чтобы не открываться снова, как в первый раз? Спасибо!

ответ

4

Когда вы пишете form2 form = new form2() вы создаете еще один экземпляр этого, поэтому вам нужно сохранить этот экземпляр и использовать тот же:

private Form form; 
private void button_Click_1(object sender, EventArgs e) 
{ 
    if(form==null) 
     form = new Form2(); 

    form.Show(); 
} 
+0

нормально, я понимаю, но у меня есть ошибки, когда я еще раз нажмите кнопку в Form1 , Ошибка: «не может получить доступный объект» и появляется в форме. Show(); в form1 –

+0

Я считаю, что ваш экземпляр формы2 не должен быть удален, если вы действительно делаете то, что сказали в своем вопросе, то есть устанавливаете 'FormClosingEventArgs.Cancel = true' и вызываете' Form.Hide() ' – Logerfo

+0

Поэтому я должен что-то изменить в форме2 закрывается? Есть моя проблема? Поверьте мне, я много изучил этот вопрос, и до сих пор я много пытался. –

 Смежные вопросы

  • Нет связанных вопросов^_^