Solved

Close one form and open another...

Posted on 2009-04-08
4
772 Views
Last Modified: 2013-12-17
Application C# Windows Form Application

I have an application where an initial form opens up. This form offers the user a couple of different options, each option is supposed to open a form and close the originating form.

I have tried creating an instance of the second form in program.cs then opening it, and closing the initial form, but when I do the entire application ends.

I do not want an MDI setup - basically I want the program to end when the last form closes, not when the first form closes. I am having difficulties.
0
Comment
Question by:ProWebNetworks
  • 2
  • 2
4 Comments
 
LVL 1

Author Comment

by:ProWebNetworks
ID: 24101291
This is the current code of my program.cs

The name of the second form will be frmMainMenu, there will be many other forms in addition. Once they choose an option on Main Menu, it will then close and then open yet another form based on what they chose. All in all this app will have around 25 different forms, and typically only one form will be open at any one time. Once I close an originating form, there will be no need to keep it in memory, if I need to reopen it, then I will simply reopen it.

Thanks.
using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;
 

namespace SJRDB_C

{

    static class Program

    {

        /// <summary>

        /// The main entry point for the application.

        /// </summary>

        [STAThread]

        static void Main()

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new frmLogin());
 

            

        }
 
 

    }

}

Open in new window

0
 
LVL 6

Expert Comment

by:SaedSalman
ID: 24103079
in the frmLogin's Login button add these lines: (if access is granted)

frmLogin.Close();
frmMainMenu x =new frmMainMenu();
0
 
LVL 6

Expert Comment

by:SaedSalman
ID: 24103112
Simply, To close a form use Close() Method.
To run a form create an object of type that form, Also
Form.Show() and Form.Hide may help.
to exit a form use Application.Exit()
to run a form use Application.run(Object of type that form)
using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;

 

namespace SJRDB_C

{

    static class Program

    {

        /// <summary>

        /// The main entry point for the application.

        /// </summary>

        [STAThread]

        static void Main()

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new frmLogin());

            Application.Run(new frmMainMenu());\\ frmMainMenu will open after frmLogin been closed

 

            

        }

 

 

    }

}

 

Open in New Window Select All 

Open in new window

0
 
LVL 1

Accepted Solution

by:
ProWebNetworks earned 0 total points
ID: 24110853
I added a static class for handling form calling called FormHandler. As you can see in the code below I called:

FormHandler.Open_frmLogin();

Then I used the Application.Run();

This way I could have all forms within the application close and the application would still continue to run, allowing me to open a new form. With the example you showed above, the main menu would have about 10 options on it, allowing the user to open any of 10 different forms.

At that point I would run into a problem adding the Application.Run method you have above. I would then be required to hide frmMainMenu as opposed to closing it out completely. I know it should not be required to close it, however I prefer that, it seems cleaner.

Can you give your opinion as to my solution here? It does work - but I am not sure if I am following proper procedure for how I am calling multiple forms.

Thanks.
namespace SJRDB_C

{

    static class Program

    {

        /// <summary>

        /// The main entry point for the application.

        /// </summary>

        [STAThread]

        static void Main()

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            FormHandler.Open_frmLogin();

            Application.Run();

        }

    }

}

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It seems a simple enough task, yet I see repeated questions asking how to do it: how to pass data between two forms. In this article, I will show you the different mechanisms available for you to do just that. This article is directed towards the .N…
Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Internet Business Fax to Email Made Easy - With  eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, f…

861 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now