Solved

Close one form and open another...

Posted on 2009-04-08
4
773 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

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

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…
This document covers how to connect to SQL Server and browse its contents.  It is meant for those new to Visual Studio and/or working with Microsoft SQL Server.  It is not a guide to building SQL Server database connections in your code.  This is mo…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…

772 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