实际使用
Program.cs代码
//声明一个线程 private static System.Threading.Mutex mutex; /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //开启线程 mutex = new System.Threading.Mutex(true, "OnlyRun"); if(mutex.WaitOne(0, false)) { FormLogin fl = new FormLogin(); fl.ShowDialog(); if(fl.DialogResult == DialogResult.OK) { Application.Run(new FormMain()); } else { return; } } else { MessageBox.Show("程序已经在运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); Application.Exit(); } }
登录窗体(FormLogin)代码
if(textBox1.Text == "123") { //验证用户名密码成功 this.DialogResult = DialogResult.OK; //返回一个登录成功的对话框状态 this.Close(); //关闭登录窗口 }
优劣
优:1、可以防止重复运行该程序。
改进:1、根据需要是否关闭Login窗体。
其他方法一
使用Close关闭登录窗体,使用Application.Run()方法打开主窗体
Program.cs代码
FormLogin fl = new FormLogin(); fl.ShowDialog(); if(fl.DialogResult == DialogResult.OK) { Application.Run(new FormMain()); } else { return; }
登录窗体(FormLogin)代码
private void button1_Click(object sender, EventArgs e) { if(textBox1.Text == "aaa") { //验证用户名密码成功 this.DialogResult = DialogResult.OK; //返回一个登录成功的对话框状态 this.Close(); //关闭登录窗口 } }
优劣
优:1、将登录窗体关闭,只打开主窗体。
劣:1、如果需要切换用户,还需要重新运行窗体,无法使用FormLogin.Show();方法。
其他方法二
使用Hide()方法隐藏登录窗体,使用实例化的方法打开主窗体。