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日

相关文章

  • windows平台上运行的unix模拟环境cygwin cygwin的安装配置与使用介绍

    下面是对”windows平台上运行的unix模拟环境cygwin cygwin的安装配置与使用介绍”的完整攻略: 一、cygwin简介 Cygwin是一款在Windows平台上运行的UNIX模拟环境,它能够让Windows上的用户使用类UNIX的命令和工具,方便进行Shell脚本编写,程序开发等操作。Cygwin可以为Windows用户提供一个完整的UNIX…

    other 2023年6月27日
    00
  • Vue使用Swiper封装轮播图组件的方法详解

    Vue使用Swiper封装轮播图组件的方法详解 本文将为您详细介绍在Vue项目中使用Swiper插件封装轮播图组件的方法。Swiper是一款特别优秀的移动端轮播图插件,使用起来非常方便,配合Vue框架使用更是如虎添翼。 安装Swiper插件 首先,我们需要安装Swiper插件。可以通过npm来安装,命令如下: npm install swiper –sav…

    other 2023年6月25日
    00
  • Android Fragment使用全解

    Android Fragment使用全解 什么是Fragment Fragment是Android中提供的一种组件,它可以被视为Activity中的“子Activity”,可以嵌套在Activity中并且具有相同的生命周期。通过使用Fragment,我们可以轻松地实现模块化设计和灵活的UI界面。 Fragment的生命周期 Fragment的生命周期与Act…

    other 2023年6月27日
    00
  • 自建ssr(谷歌云免费试用一年)

    自建ssr(谷歌云免费试用一年) ShadowsocksR(SSR)是当前最为流行的一款科学上网软件,因为其稳定、速度快,而且可以自己搭建,最为重要的是能够有效的避免GFW的干扰,成为百万用户追捧的口袋神器。 自建ShadowsocksR 为了降低花费,一般可以通过自己购买VPS,然后搭建ShadowsocksR服务,而谷歌云抢占了大量市场份额,有免费试用一…

    其他 2023年3月28日
    00
  • 用DOS命令查QQ好友IP地址

    用DOS命令查QQ好友IP地址攻略 如果你想使用DOS命令来查找QQ好友的IP地址,可以按照以下步骤进行操作: 打开命令提示符:点击开始菜单,搜索并打开“命令提示符”或者“CMD”。 运行netstat命令:在命令提示符窗口中,输入netstat -n命令并按下回车键。这个命令将显示当前计算机与其他计算机之间的网络连接信息。 查找QQ的IP地址:在netst…

    other 2023年7月30日
    00
  • VBS字符串的内部实现

    VBS字符串的内部实现 在 VBS(Visual Basic Script)中,字符串是很常见的类型,而且它们的操作很方便,比如字符串连接、长度计算、截取等等。本文将会讲解 VBS 字符串的内部实现,以及它们在计算机内存中的存储格式。 VBS字符串的定义与赋值 在 VBS 中定义字符串可以使用 Dim 关键词,例如: Dim str 在这个例子中,我们只是定…

    other 2023年6月20日
    00
  • sql学习笔记(三)——联表查询

    SQL学习笔记(三)——联表查询 在SQL中联表查询是非常常见的操作,因为在实际开发中,不同的数据表之间往往存在着复杂的关联关系。本文将会介绍联表查询以及如何进行复杂多表联查。 基本联表查询 联表查询是SQL中最常用的查询之一,其基本语法如下: SELECT 列名1,列名2…列名n FROM 表1,表2 WHERE 表1.列名 = 表2.列名; 例:假设…

    其他 2023年3月28日
    00
  • ARM汇编解决阶乘及大小写转换的问题

    ARM汇编解决阶乘问题的攻略 问题描述 阶乘是指将一个正整数 n 与小于等于 n 的所有正整数相乘的结果。例如,5的阶乘为 5! = 5 * 4 * 3 * 2 * 1 = 120。我们的目标是使用ARM汇编语言编写一个程序,计算给定正整数的阶乘。 解决方案 下面是一个使用ARM汇编语言解决阶乘问题的示例程序: .global _start .section…

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