Закрытие формы Wpf из другой формы - PullRequest
0 голосов
/ 05 марта 2012

Добрый день всем. У меня есть вопрос, я использую wpf, и я не могу найти правильный способ закрытия form1 из form2.

WpfForm form1 = new WpfForm();
form1.close();

Пожалуйста, мне нужна помощь.

Ответы [ 3 ]

2 голосов
/ 05 марта 2012

Как сказал Мэтт, вам нужно иметь ссылку в первой форме вашей второй формы, поэтому, предполагая, что у вас будет эта ссылка, вы можете просто добавить обработчик событий, подобный показанному ниже, в какой-то момент в коде вашей первой формы когда ссылка на вторую форму установлена ​​на экземпляр, хорошим вариантом будет что-то вроде вашего события Window_Loaded.

secondWindow.Closing += (s, e) => this.Close();

Выше приведен встроенный обработчик событий, если вы хотите иметь более подробный код, вы можете сделать что-то вроде:

secondWindow.Closing += CloseMe;

private void CloseMe(Object sender, EventArgs e)
{
    this.Close();
}

Если вам интересно, мистер Скит обсуждает предостережения встроенного обработчика событий в другом вопросе здесь .

1 голос
/ 05 марта 2012

Как сказали Мэтт и Поли, вам нужно иметь ссылку в первой форме, поэтому, если вы хотите сделать это без ссылки, вы можете использовать статический модификатор доступа и делегаты , как здесь;

    public delegate void Method();
    private static Method close;

    public Form1()
    {
        InitializeComponent();
        close = new Method(Close);
    }

    public static void CloseForm()
    {
        close.Invoke();
    }

Далее во второй форме вы можете закрыть первую без ссылок, написав просто так:

Form1.CloseForm();
1 голос
/ 05 марта 2012

Вам нужна ссылка на вашу первую форму во второй.Затем вы можете просто позвонить close, используя эту ссылку.

Есть несколько способов справиться с этим.Вы можете добавить свойство во вторую форму для хранения ссылки на вашу первую форму.Когда вы создаете вторую форму, вы устанавливаете это свойство, а затем в том случае, если событие во второй форме должно закрывать первую форму (например, нажатие кнопки), вы можете использовать эту ссылку для закрытия формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...