I have a Visual C# project using windowsforms that does not exit when the X is clicked on any form OTHER than the first form. I think this may have something to do with my form switching?
Currently, I have a Template.CS which is exactly what it sounds like. All of my usage forms extend this by:
public partial class Welcome : ADL.template
Then, I switch between forms by invoking this method:
public static void formSwitch(Form in_form, Form out_form)
{
in_form.Hide();
out_form.Show();
}
Called by:
Program.formSwitch(this, new frmUserInput());
What i think is happening here is, the X is closing the Form NOT the application because the starting form is Hidden, not closed. Is there a better way for me to switch between forms?
Thanks!
Well before answering your question, I should point out that
Hidedoesn’t actually close your form, it only (as the name implies) hides it. So as time goes on, you’ll keep piling on forms until you either run out of GDI objects or out of memory, either way you’ll crash.You are kind of correct about the reason why your application isn’t closing though: even though you close the current form, all your other forms are still loaded so your application won’t end.
To fix this, the best way would be to actually close your forms when you don’t need them anymore. You won’t even have to add any code to close your application then.
Now if you don’t want to do that for whatever reason, you can always just call
Application.Exit. I strongly discourage you to pursue this “solution” though.Edit: as for a possible solution, you could change Program.cs to something like:
And then your
formSwitchwould become:It looks weird because your workflow is weird for a Windows program. This is more the workflow of a 1970 FORTRAN program running in DOS.