2013-10-25 5 views
-4

Как я могу закрыть вторую форму из другой формы в C#?Как закрыть вторую форму?

Я использую это в Form1, но он не работает.

Form2 form2 = new Form2(); 

form2.Close(); 

Что случилось ???

+3

Вы должны закрыть экземпляр, который 'Show()' ред. – SLaks

+1

Этот код создает новый экземпляр второй формы, а затем закрывает его. Обратите внимание, что вы никогда не называете 'form2.Show()' или 'form2.ShowDialogue()', поэтому форма никогда не будет показана. – gunr2171

ответ

0

Предположительно в какой-то момент времени, что первая форма созданного экземпляра типа Form2 и показал его. Затем он отбросил эту ссылку. Вместо того, чтобы выбросить эту ссылку прочь вы должны хранить его в поле экземпляра Form1, так что вы можете получить доступ к нему позже и закрыть его:

public class Form1 : Form 
{ 
    private Form2 child; 
    private void PlaceWhereForm2IsShown() 
    { 
     child = new Form2(); 
     child.Show(); 
    } 
    private void CloseForm2() 
    { 
     child.Close(); 
    } 
} 
+0

Thx, он работает :) – user2920845

0

По второй форме оказывается, что форма уже открыто, вам необходимо получить экземпляр этой формы, а затем закройте его. Вы можете использовать свойство Application.OpenForms, которое предоставит вам все открытые формы. Получите тот, который вам нужен, и закройте его.

var form2 = Application.OpenForms["Form2"] as Form2; 
if (form2 != null) 
    form2.Close(); 
+0

@Downvoter, позаботьтесь прокомментировать? – Habib

+0

Не вниз, но это выглядит грязно. Не сказать, что это неправильно. – gunr2171

+0

@ gunr2171, Если форма не открыта из текущей формы, а в текущей форме нет экземпляра, то это очень полезно в приложениях WinForm. – Habib

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