关闭子窗口时关闭父窗口的选择

时间:2016-07-25 16:19:31

标签: wpf c#-4.0

我有一个主窗口,用于打开子窗口:

this.Hide();
this.ShowInTaskbar = false;
login = new frmLogin(this); 
login.Closed += (s, args) => this.Close();
login.Show();

这很好用,子窗口打开,如果用户点击X按钮,两个窗口都会关闭。

该窗口中有一个按钮可以执行任务,如果成功,必须重新打开主窗口并关闭子窗口:

// main is reference to main window, this. is the sub window
main.ShowInTaskbar = true;
main.Show();
main.BringIntoView();
this.Close();

调用this.close时,主窗口也会关闭。我似乎无法将它分开,如果用户单击X按钮,一切都会关闭,但如果用户成功登录,子窗口将关闭,主窗口将被取消隐藏。如果我删除此行:

login.Closed += (s, args) => this.Close();

然后登录将起作用,但如果用户点击X按钮,子窗口关闭但主窗口仍然在后台摩擦

1 个答案:

答案 0 :(得分:1)

你可以用各种方式做到这一点。

如果没有太多改变,你可以在你的frmLogin中添加一个布尔属性,比如

public bool CloseMainForm { get; private set; }

默认值应为true,当您不需要关闭主窗口时,可以将其设置为False,例如

...
main.BringIntoView();
this.CloseMainForm = false;
this.Close();
...

并更改您的事件处理程序

login.Closed += (s, args) => { if (login.CloseMainForm) this.Close(); };