我有一个主窗口,用于打开子窗口:
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按钮,子窗口关闭但主窗口仍然在后台摩擦
答案 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(); };