【问题标题】:Choice to close the parent window when closing a child window关闭子窗口时选择关闭父窗口
【发布时间】:2016-07-25 16:19:30
【问题描述】:

我有一个主窗口,它使用以下方法打开一个子窗口:

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按钮,子窗口将关闭,但主窗口仍在后台摩擦

【问题讨论】:

    标签: wpf c#-4.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(); };
    

    【讨论】:

      猜你喜欢
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2011-01-19
      • 2019-09-30
      相关资源
      最近更新 更多