C#WinForm 实现登录界面验证码功能(区分大小写+不区分大小写)

2021-03-20 20:24

阅读:494

标签:char   catch   自定义   winform   val   rect   drawrect   flag   功能   

文章来自:https://blog.csdn.net/IT_xiao_guang_guang/article/details/104250015


一、功能界面

技术图片
图1 验证码(区分大小写)
技术图片
图2 验证码(不区分大小写)

二、创建一个产生验证码的类Class1

(1)生成随机验证码字符串,用的是Random随机函数
(2)创建验证码图片,将该字符串画在PictureBox控件中

Class1.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;//图片
using System.Windows.Forms;

namespace ValidCodeTest
{
    public class Class1
    {
        #region 验证码功能            
        /// 
        /// 生成随机验证码字符串
        /// 
        public static string CreateRandomCode(int CodeLength)  
        {
            int rand;
            char code;
            string randomCode = String.Empty;//随机验证码
            //生成一定长度的随机验证码
            Random random = new Random();
            for (int i = 0; i 
        /// 创建验证码图片
        /// 
        public static void CreateImage(string strValidCode, PictureBox pbox)
        {
            try
            {
                int RandAngle = 45;//随机转动角度
                int MapWidth = (int)(strValidCode.Length * 21);
                Bitmap map = new Bitmap(MapWidth, 28);//创建图片背景

                Graphics graph = Graphics.FromImage(map);
                graph.Clear(Color.AliceBlue);//清除绘画面,填充背景色
                graph.DrawRectangle(new Pen(Color.Black, 0), 0, 0, map.Width - 1, map.Height - 1);//画一个边框
                graph.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//模式
                Random rand = new Random();
                //背景噪点生成
                Pen blackPen = new Pen(Color.LightGray, 0);
                for (int i = 0; i 

三、调用

(1)更新验证码
(2)验证(区分大小写)
(3)验证(不区分大小写)

Form1.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ValidCodeTest;

namespace ValidCode
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        #region 验证码
        private const int ValidCodeLength = 4;//验证码长度        
        private String strValidCode = "";//验证码                        

        //调用自定义函数,更新验证码
        private void UpdateValidCode()
        {
            strValidCode = Class1.CreateRandomCode(ValidCodeLength);//生成随机验证码
            if (strValidCode == "") return;
            Class1.CreateImage(strValidCode, pbox1);//创建验证码图片
        }
        #endregion


        private void pbox1_Click(object sender, EventArgs e)
        {
            UpdateValidCode();//点击更新验证码
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            UpdateValidCode();//加载更新验证码
        }


        /// 
        ///  验证(区分大小写)
        ///         
        private void btn1_Click(object sender, EventArgs e)
        {
            string validcode = txtValidCode.Text.Trim();

            char[] ch1 = validcode.ToCharArray();
            char[] ch2 = strValidCode.ToCharArray();
            int Count1 = 0;//字母个数
            int Count2 = 0;//数字个数

            if (String.IsNullOrEmpty(validcode) != true)//验证码不为空
            {
                for (int i = 0; i = 'a' && ch1[i] = 'A' && ch1[i] 
        ///  验证(不区分大小写)
        ///   
        private void btn2_Click(object sender, EventArgs e)
        {
            string validcode = txtValidCode.Text.Trim();

            if (String.IsNullOrEmpty(validcode) != true)//验证码不为空
            {
                if (validcode.ToLower() == strValidCode.ToLower())
                {
                    MessageBox.Show("验证通过", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    UpdateValidCode();
                    txtValidCode.Text = "";
                    txtValidCode.Focus();
                }
                else
                {
                    MessageBox.Show("验证失败", "警告", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    UpdateValidCode();//更新验证码
                    txtValidCode.Text = "";
                    txtValidCode.Focus();
                }
            }
            else//验证码为空
            {
                MessageBox.Show("请输入验证码", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                UpdateValidCode();//更新验证码
                txtValidCode.Text = "";
                txtValidCode.Focus();
            }
        }
    }
}

??.exe测试文件下载地址: https://www.lanzous.com/i984xva
??密码:test

C#WinForm 实现登录界面验证码功能(区分大小写+不区分大小写)

标签:char   catch   自定义   winform   val   rect   drawrect   flag   功能   

原文地址:https://www.cnblogs.com/xggbest/p/12293376.html


评论


亲,登录后才可以留言!