【问题标题】:C# Closing event handler not workingC#关闭事件处理程序不起作用
【发布时间】:2014-05-22 15:06:39
【问题描述】:

我希望当用户关闭当前的主菜单窗体大小正常。我尝试了各种方法来处理 Closing 事件,但注意到表单似乎仍然关闭并且不显示消息框,提醒我该函数已运行。

主菜单表单打开,但在用户使用当前表单时最小化。

我的关闭事件处理程序;

private void frm_createCust_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel = true;
            MessageBox.Show("Closing");
            frm_MainMenu frm_MainMenu = new frm_MainMenu();
            frm_MainMenu.WindowState = FormWindowState.Normal;
            frm_MainMenu.Show();
            //this.Close();            
        } 

提前致谢。

【问题讨论】:

    标签: c# event-handling formclosing


    【解决方案1】:

    子窗体在关闭时不应试图影响其父窗体,而应由父窗体处理该逻辑并在代码中应用事件处理程序:

    //somewhere in your main form's code:
    SomeChildForm child = new SomeChildForm();
    child.FormClosing += (s, args) =>
    {
        WindowState = FormWindowState.Normal;
        Show();
    };
    child.Show();
    

    【讨论】:

    • 是的,这是一个更好的解决方案。
    • 糟糕,我在设计器中犯了一个错误,this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frm_createCust_FormClosing);我搞定了,不过还是谢谢大家:)
    • 没注意到还有其他形式。
    【解决方案2】:

    这是你想要的吗?表单是否处于父/子关系?

    this.ParentForm.WindowState = FormWindowState.Normal;
    

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 2020-07-25
      • 2018-09-22
      • 2012-01-26
      相关资源
      最近更新 更多