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

如何从另一个应用程序(C#)运行第二个应用程序,c#,windows,showdialog,C#,Windows,Showdialog,您能告诉我如何关闭第一个应用程序并立即运行第二个应用程序吗 第一步:(登录验证) 第二步:(运行主程序) 如果用户成功登录到程序,我需要关闭登录应用程序并运行名为“Main”的新应用程序 登录的检查如下所示: if (access.access == true) { Application.Run(new Main()); Close(); } else MessageBox.Show("Přihlašovací jméno nebo heslo neni správné

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

第一步:(登录验证)

第二步:(运行主程序)

如果用户成功登录到程序,我需要关闭登录应用程序并运行名为“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.
我认为解决我的问题的最佳答案是使用
ShowDialog
DialogResult
,但我不知道如何将它们用于我的设置。

看看

这里的区别是,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(); 
        } 
    } 
} 

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

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");
}

1) 为什么要使用单独的应用程序来请求凭据,而不是只打开一个对话框来请求凭据?2) 要启动另一个应用程序,请使用Process.start 3)桌面应用程序已经知道用户是谁。为什么再问一次?你为什么要走这条路线还不清楚。您可以在进入应用程序之前打开登录的模式对话框。运行
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");
}