简体   繁体   中英

How to make Close button work as Minimize: C# Winforms

How can I make the (default) Close button (at top right corner) in my application, to work it as Minimize . Actually I want to minimize the application on clicking the cross-symbol, but exit the application, when use clicks on my menu option Exit .

I wrote this code for minimizing the form on clicking close button:

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

and wrote this code for exiting the application, on clicking exit from menu options.

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

But now, when I click on Exit menu option, then also the form is being minimized, and not exiting.

Can anyone please help?

Check to see whether FormClosingEventArgs.CloseReason is equal to CloseReason.UserClosing before deciding to minimize the window. Alternatively, compare for CloseReason.ApplicationExitCall .

From the documentation for CloseReason :

Members

...

UserClosing

The user is closing the form through the user interface (UI), for example by clicking the Close button on the form window, selecting Close from the window's control menu, or pressing ALT+F4.

...

ApplicationExitCall

The Exit method of the Application class was invoked.

Try this

EDIT May use Resize Event to do it,

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

Then using the FormClosing Event to cancel Close and minimize the Form as below

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM