I have a windows forms question:
Program.cs:
Application.Run(new frmStart());
frmStart: on btnLoad_Click,
frmLoad formLoad = new frmLoad();
formLoad.Show();
this.Hide(); // if I do a this.Close(); after it shuts down and doesn't get to show the form
frmLoad: on btnCancel_Click:
Application.Exit();
// or this.Close();
// or even: base.Close();
The form disappears but the program doesn’t end, I still have to press the blue “Stop Debugging” to make it stop.
I have been looking… I know it is possible to make the program really stop, and not just freeze when you close the second form, even if you don’t keep the first form on the screen, but can’t remember and can’t figure out how.
Ack, -1 on Application.ExitThread!
The issue is that you haven’t closed the main form. The simplest way is to hook onto the 2nd form’s Closed event and have it close the main form. For example the code to open the 2nd form changes to:
This essentially sets up so that when the frmLoad form closes, the main form calls it’s Close() method. I used a Lambda expression for the event handler, but you can just as easily create a private method accepting an (object sender, EventArgs e) and point .FormClosed at it.
*Edit: Sorry, missed that you only want to close on certain state. In which case on your frmLoad, create a public property such as:
public bool UserCancelled
{
get;
private set;
}
where the Cancel button sets this to True before closing the form. Your event handler in the main form changes to: