2012-06-17 3 views
1

Похоже, что второе окно не закрывается. Вот что я делаю ....Закрытие вторичного окна полностью

  • Я создал новый проект WPF.

  • Я разместил кнопку в главном окне.

  • Я установил следующий код в кнопку, чтобы запустить второе окно и скрыть главный.

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
        var projectWindow = new NewProjectInfo(); 
        this.Hide(); 
        projectWindow.Show(); 
    } 
    

-Новый окно пустое окно ничего на нем.

-В окне «закрыть» в новом окне я снова помещаю код в главное окно.

private void Window_Closed(object sender, EventArgs e) 
    { 
     var mainWindow = new MainWindow(); 
     mainWindow.Show(); 
    } 
  • Если я запускаю программу и закройте главное окно без открытия второго окна, программа заканчивается, как я хотел бы, чтобы это.

  • Если я нажму кнопку в главном окне, перейдя ко второму окну, закройте это окно, вернув меня в главное окно, а затем закройте главное окно, которое программа не закончила. (Это означает, что я должен нажать на кнопку остановки в визуальной студии, чтобы получить его до конца)

Это походит на посещение второго окна оставляет какое-то процесс работает.

Так что, когда я закрыть главное окно, я могу просто запустить:

Application.Current.Close(); 

Но что безопасно? У меня есть шанс оставить что-нибудь висящим? Или есть лучший способ закрыть это второе окно, поэтому, когда я закрываю главное, программа закончится?

ответ

3

Эти линии

var mainWindow = new MainWindow(); 
    mainWindow.Show(); 

создать новый MainWindow и показать его. Оригинальный MainWindow по-прежнему скрыт.

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

// Create a NewProjectInfo instance and pass this 
var projectWindow = new NewProjectInfo(this); 
this.Hide(); 
projectWindow.Show(); 

И в конструкторе projectWindow, сохраните ссылку на принятый в глобальной переменной

var MainWindow _originalReference; 

public NewProjectInfo(MainWindow original) 
{ 
    _originalReference = original; 
} 

теперь окно закрыть событие может используйте ссылочное окно

private void Window_Closed(object sender, EventArgs e) 
{ 
    _originalReference.Show(); 
} 
0

Вместо создания нового главного окна вы можете просто позвонить Application.Current.MainWindow.Show(); в вашем закрытом обработчике событий?

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