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,给赋值就可以了哦。

 

posted @ 2015-06-25 12:46  壹兒壹  阅读(1862)  评论(1编辑  收藏  举报