首页 > 其他分享 >窗体登录逻辑的实现2

窗体登录逻辑的实现2

时间:2023-01-07 00:22:26浏览次数:54  
标签:逻辑 登录 Form void 窗体 userInfo

之前在窗体登录逻辑的实现 - hanzq_go - 博客园 (cnblogs.com)中写过一个窗体登录逻辑的实现。

这种方式是在应用程序的入口将登录窗体以showdialog的方式显示,如果返回DialogResult.OK,则将主窗体设置为启动页。

这里再介绍另外一种登录逻辑的实现,原理如下:

首先将登录窗体frmLogin作为启动页显示;

然后在登陆窗体代码中判断用户名和密码是否正确,如果正确显示主窗体同时隐藏登录窗体,如果不正确显示错误信息;

这里需要注意的是,如果登陆窗体为启动页,判断完用户名和密码后只能隐藏不能关闭,如果关闭则会退出整个应用程序。


 

实现代码如下:

using System;
using System.Windows.Forms;

namespace 窗体登录逻辑的实现2
{
    public partial class frmlogin : Form
    {
        public frmlogin()
        {
            InitializeComponent();
            this.Load += Frmlogin_Load;
        }

        private void Frmlogin_Load(object sender, EventArgs e)
        {
            this.lblErroMsg.Visible = false;
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            UserInfo userInfo = new UserInfo()
            {
                UserName = this.txtUserName.Text,
                Password = this.txtPassword.Text,
            };

            if (userInfo.UserName == "admin" && userInfo.Password == "123456")
            {
                this.Hide();//登录页为启动页,不能关闭,只能隐藏
                //首先判断frmMain是否已经存在
                Form f = GetForm(typeof(frmMain).Name);
                if (f == null)
                {
                    showForm<frmMain>(userInfo);
                }
                else
                {
                    f.Tag = userInfo;
                    f.Show();
                }
            }
            else
            {
                this.lblErroMsg.Visible = true;
                this.lblErroMsg.Text = "用户名或密码错误!";
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        //从已打开窗体集合中找到指定的窗体
        public Form GetForm(string formName)
        {
            Form form = null;
            foreach (Form item in Application.OpenForms)//判断应用程序中打开的窗体
            {
                if (item.Name == formName)
                {
                    form = item;
                    break;
                }
            }
            return form;
        }

        //显示窗体
        public void showForm<F>(object objData)
        {
            Form f = (Form)Activator.CreateInstance(typeof(F));
            if (objData != null)
            {
                f.Tag = objData;
            }
            f.Show();
        }
    }
}

 

代码中增加两个方法,分别是:GetForm和showForm。

GetForm用于判断窗体是否存在,如果存在则返回该窗体,如果不存在则返回null;

showForm用于显示窗体,同时可以向显示的窗体的tag属性中传入参数。

窗体登录逻辑的实现

标签:逻辑,登录,Form,void,窗体,userInfo
From: https://www.cnblogs.com/hanzq/p/17031988.html

相关文章