如何使关闭按钮作为最小化工作:C#Winforms

时间:2013-03-17 09:06:04

标签: c# .net winforms

如何在我的应用程序中创建(默认)关闭按钮(位于右上角),将其作为最小化。 实际上,我希望在点击交叉符号时最小化应用程序,但在我的菜单选项退出上使用点击时退出应用程序。

我编写了这段代码,用于在点击关闭按钮时最小化表单:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (minimize_on_close == "Yes")
        {
            e.Cancel = true;
            this.WindowState = FormWindowState.Minimized;
        }
    }

并编写此代码以退出应用程序,单击退出菜单选项。

private void exitToolStripMenuItem1_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

但现在,当我点击退出菜单选项时,表单也会被最小化,而不会退出。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

在决定最小化窗口之前,检查FormClosingEventArgs.CloseReason是否等于CloseReason.UserClosing。或者,比较CloseReason.ApplicationExitCall

来自CloseReason的文档:

  

成员

     

...

     

UserClosing

     

用户通过用户界面(UI)关闭表单,例如单击表单窗口上的“关闭”按钮,从窗口的控制菜单中选择“关闭”,或按ALT + F4。

     

...

     

ApplicationExitCall

     

调用了Application类的Exit方法。

答案 1 :(得分:1)

试试这个

修改 可以使用Resize事件来执行此操作,

private void Form1_Resize(object sender, EventArgs e) 
  { 
  if (this.WindowState == FormWindowState.Minimized) 
  this.Hide(); 
  }

然后使用FormClosing事件取消关闭并将表单最小化,如下所示

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
if (e.CloseReason == CloseReason.UserClosing) 
 { 
  e.Cancel = true; 
  this.WindowState = FormWindowState.Minimized; 
 } 
}