C# 窗体(登录界面)

C# 窗体(登录界面)

简介

在开发一个C# WinForm 应用程序时,登录界面作为很重要的一环,往往是APP的入口界面,这也是给人们留下“第一印象”的地方之一,因此为了让应用程序展现更好的用户体验,设计一个美观、实用、易用的登录界面显得尤为重要。

本文将讲解如何使用C# WinForm设计一个简单而实用的登录界面。

实现方法

  1. 设计登录界面

登录界面应该包括输入用户名、密码、记住密码、自动登录、登录和退出按钮等界面。WinFrom有很多常用的控件,常用的有文本框、复选框和按钮,首先在Visual Studio上创建WinFrom窗体项目,然后拖动控件到需求区域即可。

  1. 实现记住密码和自动登录功能

在登录界面中,有一个实用的功能即“记住密码和自动登录功能”,这是用户在下一次进入时可以免去输入用户名和密码的步骤。

//改变记住密码和自动登录按钮的选择状态
private void cbRemember_CheckedChanged(object sender, EventArgs e)
{
   if (cbRemember.Checked == false)
   {
      cbAutoLogin.Checked = false;
   }
}

private void cbAutoLogin_CheckedChanged(object sender, EventArgs e)
{
   if (cbAutoLogin.Checked == true)
   {
      cbRemember.Checked = true;
   }
}

// 保存密码
private void SaveConfig()
{
   Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
   config.AppSettings.Settings["UserName"].Value = this.txtUserName.Text;
   config.AppSettings.Settings["Password"].Value = this.txtPassword.Text;
   config.AppSettings.Settings["RememberPassword"].Value = this.cbRemember.Checked.ToString();
   config.AppSettings.Settings["AutoLogin"].Value = this.cbAutoLogin.Checked.ToString();
   config.Save(ConfigurationSaveMode.Modified);
}

// 读取密码
private void GetConfig()
{
   this.txtUserName.Text = ConfigurationManager.AppSettings["UserName"];
   this.txtPassword.Text = ConfigurationManager.AppSettings["Password"];
   bool rememberPassword;
   if (bool.TryParse(ConfigurationManager.AppSettings["RememberPassword"], out rememberPassword))
   {
      this.cbRemember.Checked = rememberPassword;
   }
   bool autoLogin;
   if (bool.TryParse(ConfigurationManager.AppSettings["AutoLogin"], out autoLogin))
   {
      this.cbAutoLogin.Checked = autoLogin;
   }
}
  1. 实现登录验证功能

在WinFrom应用程序开发中,登录验证是无法避免的一部分,我们需要先完成用户名和密码的验证,当用户输入的用户名和密码在数据库中有对应项时,登录成功,退出登录或者切换账户的时候,应该将密码或者Cookie清空,保证账户的安全性。

private void btnLogin_Click(object sender, EventArgs e)
{
   string serverName = "localhost";
   string dbName = "db_test";
   string userName = "root";
   string password = "123";
   string strSql = string.Format("select * from userInfo where Username='{0}' and Password='{1}'", txtUserName.Text, txtPassword.Text);
   SqlConnection sqlcon = new SqlConnection(string.Format("server={0};database= {1};uid={2};pwd={3}", serverName, dbName, userName, password));
   try
   {
      sqlcon.Open();//打开
      SqlCommand sqlcom = new SqlCommand(strSql, sqlcon);
      SqlDataReader dr = sqlcom.ExecuteReader();
      if (dr.Read())
      {
         SaveConfig();

         this.DialogResult = DialogResult.OK;//窗体的DialogResult属性,如果是OK,返回DialogResult.OK,否则返回其他值
      }
      else
      {
         MessageBox.Show("用户名或密码错误", "登录失败");
      }
   }
   catch(Exception ex)
   {
      MessageBox.Show(ex.ToString());
   }
}
  1. 注销

完成“记住密码和自动登录功能”和“登录验证功能”之后,应该在主窗体添加一个用户控件,作为注销控制按钮,可以让用户注销登录。

private void btnLogout_Click(object sender, EventArgs e)
{   
    ConfigurationManager.AppSettings["UserName"] = "";
    ConfigurationManager.AppSettings["Password"] = "";
    ConfigurationManager.AppSettings["RememberPassword"] = "false";
    ConfigurationManager.AppSettings["AutoLogin"] = "false";

    this.DialogResult = DialogResult.Cancel;
}

结论

通过这篇C# WinForm登录界面开发的教程,你应该对WinFrom的生命周期和用户控件等内容有了更深刻的认识,同时也明白了设计实用的登录界面的重要性,为接下来的程序设计学习打下了基础。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 窗体(登录界面) - Python技术站

(0)
上一篇 2023年3月28日
下一篇 2023年3月28日

相关文章

  • dnsmasq应用手册

    dnsmasq应用手册 什么是dnsmasq? dnsmasq是一款轻便易用的DNS和DHCP服务器软件。它不仅能够为局域网中的计算机提供DNS解析服务,还能够为这些计算机分配 IP 地址。 安装dnsmasq 在Ubuntu系统中,可以使用以下命令来安装dnsmasq: sudo apt-get install dnsmasq 在CentOS系统中,可以使…

    其他 2023年4月16日
    00
  • NOI Linux 快速入门指南

    NOI Linux 快速入门指南的完整攻略 本文将为您详细讲解 NOI Linux 快速入门指南,包括介绍、安装、常用命令、示例说明等内容。 介绍 NOI Linux 是一款基于 Ubuntu 的 Linux 发行版,专门为竞赛选手和程序员设计。它提供了一系列优秀的开发工具和编程环境,可以帮助用户更加高效地进行编程和竞赛。 安装 NOI Linux 的安装非…

    other 2023年5月6日
    00
  • mac上卸载node

    以下是关于在Mac上卸载Node的完整攻略: 卸载Node 在Mac上卸载Node有多种方法,以下是两种常用的方法: 方法1:使用Node安装程序自带的卸载工具 打开终端应用程序。 运行以下命令以打开Node安装程序: bash open /usr/local/bin/ 找到名为uninstall-node.sh的文件,并运行以下命令: bash sudo …

    other 2023年5月6日
    00
  • 创建dos命令窗口快捷方式的批处理

    创建 DOS 命令窗口快捷方式,可以更加高效地使用命令行进行文件操作等工作。以下是创建该快捷方式的完整攻略: 1. 创建批处理文件 首先,需要创建一个批处理文件,扩展名为 .bat。在该文件中,输入以下代码: @echo off start cmd 这段代码的作用是关闭命令行窗口上的回显,然后打开一个新的 DOS 命令窗口。 2. 保存批处理文件 将上述代码…

    other 2023年6月26日
    00
  • python递归实现链表快速倒转

    在 Python 中,可以使用递归算法实现链表快速倒转。具体步骤如下: 定义一个递归函数 reverseLinkedList,该函数接受一个链表头节点作为参数。 在函数体内,首先判断当前链表是否只有一个节点或者为空。如果是,直接返回该节点或者 None。 如果当前链表不是一个节点,递归调用 reverseLinkedList 函数并传入链表的下一个节点作为参…

    other 2023年6月27日
    00
  • 修改服务器配置,让asp.net文件后缀名随心所欲

    修改服务器配置,让asp.net文件后缀名随心所欲 如果你想修改服务器配置,让ASP.NET文件的后缀名随心所欲,你可以按照以下步骤进行操作: 打开IIS管理器:首先,打开Internet Information Services (IIS)管理器。你可以在Windows操作系统中的“控制面板”或者通过运行命令inetmgr来打开IIS管理器。 找到你的网站…

    other 2023年8月5日
    00
  • 记事本怎么自定义制作CAD图案填充?

    要在记事本中自定义CAD图案填充,需要先创建一个 PAT 文件,然后将其导入到 CAD 软件中。下面是详细的步骤: 创建 PAT 文件 打开记事本应用程序。 创建一个新文件并将其保存为 .pat 扩展名。例如,可以将文件命名为 my_pattern.pat。 在文件中输入 CAD 图案填充的定义。每行应包含一个字符或代码。以下是一些示例: *HOLLOW 0…

    other 2023年6月25日
    00
  • oracle(一)执行计划

    当然,我很乐意为您提供有关“Oracle(一)执行计划”的完整攻略。以下是详细的步骤和两个示例: 1 执行计划 执行计划是Oracle数据库中的一个重要概念,它是查询优化器生成的一种计划,用于指导数据库如何执行查询。执行计划可以帮助我们了解查询的执行过程,包括使用哪些索引、如何连接表、如何过滤数据等。 2 执行计划的获取 以下是获取执行计划的方法: 2.1 …

    other 2023年5月6日
    00
合作推广
合作推广
分享本页
返回顶部