Winform登录、控制软件只运行一次、回车登录
Winform登录对很多程序猿来说都有些困惑,登录进入主窗体后要销毁登录窗体,而不是隐藏哦,怎么实现呢?
先贴一段Program.cs的代码
static void Main() { Mutex mutex = new Mutex(false, "ThisShouldOnlyRunOnce"); //判断互斥体是否使用中。上下这两行代码判断程序只运行一次 bool Running = !mutex.WaitOne(0, false); if (!Running) { try { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false);
//登录窗体 LoginForm lf=new LoginForm(); lf.ShowDialog(); if (lf.DialogResult == DialogResult.OK)//这一行很重要,如果登录成功,登录窗体要返回一个结果DialogResult.OK,这样就可以运行到主窗体MainForm了哦。 { Application.Run(new MainForm(LoginForm.LoginUser)); } } catch (Exception e) { ErrorForm ef = new ErrorForm(); ef.Text = "错误"; ef.lblTitle.Text = "程序提示"; ef.lblMsg.Text = "抱歉,程序突然终止" + e.Message; ef.ShowDialog(); Application.Exit(); } } else { ErrorForm ef = new ErrorForm(); ef.Text = "提示"; ef.lblTitle.Text = "运行提示"; ef.lblMsg.Text = "程序已经运行,请勿重复运行。"; ef.ShowDialog(); Application.Exit(); } }
再贴一段登录窗体的代码
//登录按钮事件 private void btnLogin_Click(object sender, EventArgs e) { LonginFunction(); //登录方法 } //密码框输入完后直接回撤登录,要写密码框的KeyDown事件哦 private void textBoxPwd_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter)//回车键 { LonginFunction();//登录方法 } } private void LonginFunction() { string username = textBoxSysMember.Text.Trim(); string Pwd = textBoxPwd.Text.Trim(); ErrorForm ef = new ErrorForm(); if (string.IsNullOrEmpty(username)) { ef.lblTitle.Text = "登录错误:"; ef.lblMsg.Text = "必须填写用户名"; ef.ShowDialog(); } else { if (string.IsNullOrEmpty(Pwd)) { ef.lblTitle.Text = "登录错误:"; ef.lblMsg.Text = "必须填写密码"; ef.ShowDialog(); } else { // 当然这里可以写成到数据库查询的,偶这里是写死了哦 if (username == "admin") { if (Pwd == "121") { this.DialogResult = DialogResult.OK;//这个地方就是登录成功后要返回的值哦 this.Close(); } else { ef.lblTitle.Text = "登录错误:"; ef.lblMsg.Text = "用户密码错误"; ef.ShowDialog(); } } else {
ef.lblTitle.Text = "登录错误:";
ef.lblMsg.Text = "用户密码错误";
ef.ShowDialog();
}
}
}
}
这些代码里都出现了一个错误框ErrorForm ,是我自己定义的一个错误提示对话框哦,猿们可以自己定义一个,偶把自己的贴出来
这个里面有图标、标题lblTitle和错误信息lblMsg,都是Lable,给赋值就可以了哦。