2013-12-19 169 views
1

您能告诉我如何关闭第一个应用程序并立即运行第二个应用程序?如何从另一个应用程序运行第二个应用程序(C#)

第一步:(登录验证)

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

1)为什么你使用一个单独的应用程序来请求凭证,而不是打开一个对话框询问凭证? 2)要启动另一个应用程序,请使用Process.Start 3)桌面应用程序已经知道用户是谁。为什么问第二次? –

+1

为什么你想要走这条路线还不清楚。在进入应用程序之前,您可以打开登录模式对话框。运行 – Steve

回答

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

我用你的帮助解决了我的问题。真的thx,它的工作! –

1

看一看Creating a Windows Forms Application With Login

这里的区别是,主仍然运行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(); 
     } 
    } 
} 
相关问题