如何从另一个应用程序(C#)运行第二个应用程序
您能告诉我如何关闭第一个应用程序并立即运行第二个应用程序吗 第一步:(登录验证) 第二步:(运行主程序) 如果用户成功登录到程序,我需要关闭登录应用程序并运行名为“Main”的新应用程序 登录的检查如下所示:如何从另一个应用程序(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é
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");
}