如何从另一个应用程序运行第二个应用程序(C#)

时间:2013-12-19 08:32:54

标签: c# windows showdialog

您能告诉我如何关闭第一个应用程序并立即运行第二个应用程序?

第一步:(登录验证)

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Login());
}

第二步:(运行主程序)

如果用户成功登录到程序,我需要关闭登录应用程序并运行名为“Main”的新应用程序。

登录检查如下:

if (access.access == true)
{
    Application.Run(new Main());
    Close();
}
else
    MessageBox.Show("Přihlašovací jméno nebo heslo neni správné");

调试错误:

Create a second message loop on a single thread is an invalid operation. Instead, use the Application.RunDialog or form.ShowDialog.

我认为我的问题的最佳答案是使用ShowDialogDialogResult,但我不知道如何将它们用于我的设置。

2 个答案:

答案 0 :(得分:1)

查看Creating a Windows Forms Application With Login

这里的不同之处在于Main仍然运行frmMain

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new frmMain());
}

主窗体处理frmLogin

public partial class frmMain : Form 
{ 
    frmLogin _login = new frmLogin(); 


    public frmMain() 
    { 
        InitializeComponent(); 
        _login.ShowDialog(); 
        if (_login.Authenticated) 
        { 
            MessageBox.Show("You have logged in successfully " + _login.Username); 
        } 
        else 
        { 
            MessageBox.Show("You failed to login or register - bye bye","Error",MessageBoxButtons.OK,MessageBoxIcon.Error); 
            Application.Exit(); 
        } 
    } 
} 

答案 1 :(得分:1)

您可以在进入主循环之前运行模态对话框询问凭据

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    bool validated = false;
    using(frmLogin fLogin = new frmLogin())
    {
         if(fLogin.ShowDialog() == DialogResult.OK)
             validated = true;
    }
    if(validated)
        Application.Run(new Main());
    else
        MessageBox.Show("Bye");
}