WinForm窗体-->注册登录界面

C#winform中的登录界面 你可以通过属性窗口或直接在设计视图中调整每个控件的大小、位置和样式,以使其看起来像一个完整的登录界面。if (username == "admin" && password == "your_password") // 简单的验证,实际中你需要连接数据库或使用加密的密码。请注意,这只是一个非常基础的示例,实际应用中你可能需要处理更复杂的逻辑,如加密密码、连接到数据库进行验证等。在该方法中,你可以编写登录逻辑。// 在此处,我们假设你有一个叫做 textBoxPassword 的 TextBox 控件。 阅读详情

注册登录界面

Form1:登录界面

Form1:登录界面代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;

namespace 注册登录界面
{
    public partial class Form1 : Form
    {
        public List<string> accountList = new List<string>();//账号
        public List<string> passwordList = new List<string>();//密码      
        public int loginFailCount = 0;//登录次数

        public Form1()
        {
            InitializeComponent();
            LoadUserData();// 加载本地用户数据
            UserManager.MainForm = this;
        }

        //存储txt文件
        //定义一个文件路径
        private const string UserDataPath = "E:/桌面/111.txt";
        private void LoadUserData()
        {
            //判断文件是否存在
            if (!File.Exists(UserDataPath))
            {
                return;
            }

            //遍历数据
            foreach (string line in File.ReadAllLines(UserDataPath))
            {
                //跳过null和""
                if (string.IsNullOrEmpty(line))
                {
                    continue;
                }
                //','分隔符
                string[] userInfo = line.Split(',');
                //判断是否分为2段
                if (userInfo.Length == 2)
                {
                    //将账号和密码分别存入对应的数组
                    accountList.Add(userInfo[0].Trim());
                    passwordList.Add(userInfo[1].Trim());
                }
            }
        }

        //登录按键
        private void button1_Click(object sender, EventArgs e)
        {
            //先判断账号和密码是否输入内容
            if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox2.Text))
            {
                MessageBox.Show("账号和密码不能为空");
                return;
            }

            //获取输入的登录账号
            string inputAccount = textBox1.Text.Trim();
            //获取输入的登录密码
            string inputPassword = textBox2.Text.Trim();
            //判断是否登录成功     
            bool isAccountExist = false;
            //判断是否账号是否正确
            bool isLoginSuccess = false;
            //存储账号在数组中的索引
            int accountIndex = -1;

            //遍历账号数组,查找输入的账号是否存在
            for (int i = 0; i < accountList.Count; i++)
            {
                //比较输入的账号和数组中的账号
                if (accountList[i] == inputAccount)
                {
                    isAccountExist = true;// 标记账号存在
                    accountIndex = i; // 记录该账号在数组中的索引(用于后续匹配密码)
                    break; // 找到账号后退出循环,无需继续遍历
                }
            }

            // 账号不存在处理
            if (!isAccountExist)
            {
                MessageBox.Show("账号不存在");
                textBox1.Clear();// 清除密码信息
                textBox1.Focus();// 聚焦
                return;
            }
            //验证密码
            if (passwordList[accountIndex] == inputPassword)
            {
                isLoginSuccess = true;//标记密码正确,登录成功
            }
            else
            {
                MessageBox.Show("密码错误");
                textBox2.Clear();// 清除密码信息
                textBox2.Focus();// 聚焦
            }

            //判断登录次数
            if (loginFailCount >= 3)
            {
                MessageBox.Show("登录次数过多,请去注册");
                //登录按钮失效
                button1.Enabled = false;
                //启动计时器
                this.timer1.Start();
                return;
            }

            //判断登录是否成功
            if (isLoginSuccess)
            {
                MessageBox.Show("登陆成功");
                loginFailCount = 0;//重置失败次数计数器
                this.Close(); // 关闭登录窗体
            }
            else
            {
                loginFailCount++;
                MessageBox.Show($"登录失败,剩余尝试次数:{3 - loginFailCount}");
            }
        }

        //注册
        private void button2_Click(object sender, EventArgs e)
        {
            // 创建注册窗体Form2的实例,传入当前的账号数组和密码数组
            Form2 registerForm = new Form2(accountList, passwordList);
            registerForm.Show(); // 显示注册窗体
            this.Hide(); // 隐藏当前登录窗体(不关闭,注册完成后可返回) 
        }

        //定时器事件
        private void timer1_Tick(object sender, EventArgs e)
        {
            //登录按钮启用
            this.button1.Enabled = true;
            //关闭计时器
            this.timer1.Stop();
            loginFailCount = 0;
        }
    }
    public static class UserManager
    {
        // 定义一个属性 专门接收Form1窗口对象
        public static Form1 MainForm { get; set; }
    }
}

Form2:注册界面

Form2:注册界面代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace 注册登录界面
{
    public partial class Form2 : Form
    {
        //私有账号数组,接收从Form1传入的已注册账号(仅本类可用)
        private readonly List<string> _accountList;
        //私有密码数组,接收从Form1传入的已注册密码(仅本类可用)
        private readonly List<string> _passwordList;
        //静态文件路径与Form1共用同一个TXT数据文件(存储账号密码)
        private const string UserDataPath = "E:/桌面/111.txt";

        public Form2(List<string> accountList, List<string> passwordList)
        {
            InitializeComponent();
            _accountList = accountList; //接收Form1传入的已注册账号数组
            _passwordList = passwordList; //接收Form1传入的已注册密码数组
        }

        //form2注册
        private void button2_Click(object sender, EventArgs e)
        {
            string registerAccount = textBox1.Text.Trim();//注册账号去除前后空格
            string registerPassword = textBox2.Text.Trim();
            //注册密码

            //判断账号和密码是否输入内容
            if (string.IsNullOrEmpty(registerAccount) || string.IsNullOrEmpty(registerPassword))
            {
                MessageBox.Show("用户名和密码不能为空!");
                return;
            }

            //判断用户名是否重复
            if (_accountList.Contains(registerAccount))
            {
                MessageBox.Show("用户名已存在,请重新输入!");
                textBox1.Focus();
                return;
            }

            //判断密码格式
            // 密码必须包含有数字和字母,不能低于6位
            string passwordRegex = "^(?=.*[a-zA-Z])(?=.*\\d)[a-zA-Z0-9]{6,}$";
            // Regex 对应的有一个方法IsMatch()
            if (!Regex.IsMatch(registerPassword, passwordRegex))
            {
                // 说明密码值不符合规则要求
                MessageBox.Show("密码必须包含有数字和字母,不能低于6位");
                textBox2.Clear();
                textBox2.Focus();//输入焦点
                return;
            }
            try
            {
                //将新账号密码写入本地TXT文件
                using (StreamWriter writer = File.AppendText(UserDataPath))
                {
                    writer.WriteLine($"{registerAccount},{registerPassword}");
                }

                //将新账号密码添加到内存数组
                _accountList.Add(registerAccount);
                _passwordList.Add(registerPassword);

                MessageBox.Show("注册成功!请返回登录界面登录。");

                this.Close();
                UserManager.MainForm?.Show();
            }
            catch (Exception ex)
            {
                MessageBox.Show($"注册失败:{ex.Message}");
            }
        }

        //form2登录
        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
            UserManager.MainForm?.Show();
        }
    }
}

C# winform窗体实现注册/登录功能(DBHelper类) 阅读详情

相关推荐

WinForm 用户登录界面设计(附WinForm项目创建流程)

创建新项目步骤界面展示具体思路主要代码重点内容解析总结创建新项目步骤界面展示该项目是一个基于 Windows Forms 的用户登录系统,核心文件生成逻辑围绕展开,主要用于实现用户注册信息的持久化保存,以便后续登录验证。该系统通过将用户注册信息序列化为 JSON 格式并存储到本地文件,实现了简单的用户数据持久化。生成的文件以账号命名,内容为结构化的用户信息,便于后续登录时快速读取和验证,核心逻辑由CreateJson类封装,依赖库实现 JSON 处理。### 生成文件思路分析。

LZQqqqqo的博客 1838

第四篇 用户登录界面(WinForm版本)

本编文章来教大家如何创建WinForm项目,以及如何使用WinForm创建自己的登录界面

毒果的博客 1591

从零到一:基于VS2022与C# WinForm构建学生信息管理核心模块(登录、注册与数据操作)

本文详细介绍了如何使用Visual Studio 2022与C# WinForm从零开始构建学生信息管理系统的核心模块。内容涵盖项目环境搭建、通用DBHelper类封装、登录与注册功能的安全实现,以及基于SQL Server数据库完成学生信息的增删改查操作,为C#初学者提供完整的实战开发指南。

weixin_29228203的博客 540

C# 登录功能(优雅且详细)

1. 制作一个登陆界面,包含验证码,记住密码以及根据登录用户类型(RoleID)加载不同界面的功能。 2. 用户使用账号与密码登录系统。本系统的用户包括 3 种类型 3. 若用户的登录失败次数达到 3 次,那么系统应显示并且同时包含字母与数字的4位验证码,验证码字符输入正确方可登录。 4. 若选择记住密码,下次登录时直接显示上次输入的账号和密码

这里是努力做好AC吧 1万+

C#登录注册程序

自学C#,练习。登录注册窗体,功能:点击注册将输入的信息储存在sqlserver数据库中,并判断账号是否已被注册过(数据库中是否已有该账号),点击登录若账号密码信息数据库中已存在即登录成功。 欢迎新手一起学习~望大神指点还有哪些地方需要改进~

齐红建的博客 1万+

C#winform程序—信息验证登录界面设计

C#是设计windows窗体程序的良好语言,基于C#中各式各样封装好的控件,设计程序界面变得很简单!本文介绍登录信息验证界面的设计,包含数据库的连接!(此模块在大学生毕业设计中常常用到)。

qq_44218712的博客 6513

.net winform panel 不刷新_winform项目——仿QQ即时通讯程序04:登录界面补充

上一篇文章给出了Login登录界面的详细制作过程,目的是让初学者体验如何对窗体上的控件进行布局,过程非常详细,如果对winform布局不熟悉的同学可以详细阅读。本篇文章将继续完成Login窗体上的注册界面,并且用代码完善界面中控件的点击事件。搭建注册界面及文档大纲窗口我将程序注册界面也放在Login窗体中,以一个Panel的形式显示。并且注册没有诸多验证,只设置昵称和密码即可,账号由程序随机生成。...

weixin_39564527的博客 217

c#+SqlServer 用户注册、登录验证、操作

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.Sql; using System.Data.SqlClient; namespace Login_Fo.

煮酒客的博客 1267

c#第四次作业(Mysql与winfrom)

咳咳,好久没写了,刚刚做完这次作业,之前有点忙。。。 这次其实就是Mysql与Winform连接,说实话,单纯是连接没有什么意思,于是我就干脆做了整个系统(算是大概上说得过去的半成品),包括什么密码认证啊,登陆啊,注册啊,什么对于数据库表的增删改查啊这些…… 首先把,做点笔记,关于美化窗口的一些总结: 1.图标的设置:在属性中的外观中找到icon,选择一张图标文件,记得格式是.icon的。

野生酵母菌的专栏 761

c# 编写winform登录注册程序(一,登录部分)

学习c#编程语言不久,尝试编写一个学生信息管理系统的form程序。在这跟大家分享一下。如有不足之处,请轻喷。谢谢! using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;

下雨天抽烟的专栏 1万+

C#下WinForm编程:登录窗体的设计

我在csdn里搜索了很久,也没有找到符合我要求的login文档,我这次把自己的心得和自己做的成果拿出来和大家分享一下,希望对后来的人能有一些帮助。我初次做,可能代码写的不是很规范,思路也不是很清晰,但是它能达到我要的效果就行了^_^      希望哪位兄弟帮忙完善一下我的代码。我在数据库里有一个   users  的表,如下:ID     UserName           UserPa

我的专栏 1411

delphi 界面外单击 关闭_winform项目——仿QQ即时通讯程序04:登录界面补充

上一篇文章给出了Login登录界面的详细制作过程,目的是让初学者体验如何对窗体上的控件进行布局,过程非常详细,如果对winform布局不熟悉的同学可以详细阅读。本篇文章将继续完成Login窗体上的注册界面,并且用代码完善界面中控件的点击事件。搭建注册界面及文档大纲窗口我将程序注册界面也放在Login窗体中,以一个Panel的形式显示。并且注册没有诸多验证,只设置昵称和密码即可,账号由程序随机生成。...

weixin_35886660的博客 189

芯片设计新手必看:5分钟搞懂工艺角(Process Corner)到底是什么,为啥仿真总要用它?

本文详细解析了芯片设计中的工艺角(Process Corner)概念及其在仿真中的重要性。通过类比马拉松运动员的性能差异,解释了晶体管制造过程中的天然波动,并介绍了TT/FF/SS等工艺角代码的含义。文章还探讨了为何需要跑全工艺角仿真,以及现代芯片验证的完整流程,包括PVT矩阵和多模式分析(MMMC),帮助芯片设计新手快速掌握这一关键概念。

weixin_28713947的博客 244

转载 C# WINFORM 记住密码

转载自: http://blog.youkuaiyun.com/gatieme 背景 Winform实现登录窗体中记住密码的功能,模仿QQ登录记住密码的实现如下图所示,其中标题部分因为项目保密的原因,我加了马赛克,请大家见谅。用户名输入框我们采用下拉列表框ComboBox密码框我们采用textBox,并设置为密码框 设置textBox输入时不显示明文,需要将useSyst...

weixin_30678349的博客 285

AutoCAD提示找不到acdb24.dll、AcGe24.dll、AcPal.dll、AcUt.dll怎么办?

在我们安装了AutoCAD 2023版本以后,打开CAD,可能会出现dll文件丢失的情况,如下所示:1、由于找不到acdb24.dll,无法继续执行代码。重新安装程序可能解决此问题。2、由于找不到AcGe24.dll,无法继续执行代码。重新安装程序可能解决此问题。3、由于找不到AcPal.dll,无法继续执行代码。重新安装程序可能解决此问题。4、由于找不到AcUt.dll,无法继续执行代码。重新安装程序可能解决此问题。遇到AutoCAD启动系统错误,由于找不到dll文件该怎么处理呢?

huoxu369的博客 1万+

告别ORB-SLAM2?手把手教你用OpenVSLAM在Ubuntu 20.04上跑通第一个SLAM Demo(含依赖库避坑指南)

本文详细介绍了如何在Ubuntu 20.04系统上从ORB-SLAM2迁移到OpenVSLAM,包括环境配置、依赖库安装、编译调整及性能优化。OpenVSLAM凭借其模块化设计和多相机支持,在SLAM领域展现出显著优势,适合机器人导航和AR应用开发。文章还提供了实用的避坑指南和进阶技巧,帮助开发者高效完成迁移。

weixin_42524499的博客 253

winform窗体登录与注册

winform窗体应用程序,实现注册和登录功能1.1.开发环境:Visual Studio 2019 + SQL Server 20121.2.winform基本窗体界面样式设置就不上了,需要自己慢慢的设置,修改属性即可!1.3.DBHelper类DBHelper从字面上理解为“数据库帮助类”,在这里主要是进行winform窗体应用程序和数据库的数据交互。话不多说,我直接放在下面了记得导入一下命名空间1.4.主要功能代码登录按钮(其中小部分是播放的背景音乐代码)注册按钮。

WzhCsdnd的博客 1745

因果表示学习 (Causal Representation Learning, CRL)

传统的机器学习,尤其是深度学习,非常擅长学习数据中的相关性 (Correlation)。但它常常会走“捷径”,学到一些虚假的、不稳定的“表面联系”。一个AI模型在学习识别“牛”时,如果训练数据里所有的牛都在绿色的草地上,模型很可能会学到一个错误的规则:“牛 = 四条腿的生物 + 绿色背景”。你给它一张牛在海滩上的照片,它就可能不认识了。因果表示学习的目标,就是让模型超越这种表面相关性,去学习数据背后。

Xuxiansir的博客 1180

C# 编写 WinForm 窗体应用程序(第三期)

C# 编写 WinForm 窗体应用程序(第三期) 文章目录C# 编写 WinForm 窗体应用程序(第三期)C# TextBox【实例 1】创建一个窗体,在文本框中输入一个值,通过文本改变事件将该文本框中的值写到一个标签中。【实例 2】实现简单的登录窗体。C# Button【实例】实现一个简单的用户注册功能,并将提交的注册信息显示在新窗体的文本框中。结束语 C# TextBox 文本框 (TextBox) 是在窗体中输入信息时最常用的控件,通过设置文本框属性可以实现多行文本框、密码框等。 在窗体上输入信息

生产队的刘同学 2133

基于PID算法的循迹小车

这一期为创客们带来基于PID算法的循迹小车制作 1.标准赛道示意图: (该赛道包含了:左直角、右直角、十字路口等路况) 2.灰度传感器安装示意图: (可根据实际情况调节各传感器之间的间距) 3.硬件原理图: 4.控制逻辑: 5.程序如下: #define leftA_PIN 7 #define leftB_PIN 6 #define left_Pwm_PIN 5 #define STBY...

qq_44343584的博客 4万+

华为OD机试真题 新系统 2026-09-26 Java&Go&C【数据中心最佳维护时间窗】

数据中心使用一个整数数组 scores,记录 N 小时内每小时的服务器得分(可正可负)。0 表示服务器故障(无效小时)。

MISAYAONE的博客 96

winform做的单机登录界面和账号注册界面

代码: public partial class LoginForm : DevExpress.XtraEditors.XtraForm { public LoginForm() { Logger.RecordInfo("初始化登录页面"); InitializeComponent(); } //用户登录,验证账号密码 private void simpleButton.

weixin_42209881的博客 9009

滑模控制算法(SMC)讲解-案例(附C代码)

该文章介绍了滑模控制算法的原理实现步骤,特点及关键问题,最后以车辆控制案例来讲解滑模控制的整个步骤实现

heda3的博客 4111

Winform 实现登录以及应用图标的制作

登录实现,只需要几个控件和一个简单的逻辑判断即可实现. 布局效果图: 使用的控件: 1.账号密码: 2.账号输入框: 3.记住密码和自动登录: 4.登录按钮: 5.忘记密码: 去掉【忘记密码】超链接下划线设置:(属性里面找) 如此去掉的下划线,就算是悬浮也不显示,可自行适配。 6.登录注册的tab切换控件: 登录实现: 绑定事件: 属性字段名定义: 登录逻辑代码: priv...

梦和远方的博客 2138

Open3D 模拟退火算法优化的ICP点云配准

传统ICP算法易陷入局部最优且对初始位姿敏感,而SA算法通过概率性接受劣解,能够在高温阶段广泛探索解空间,低温阶段精细收敛。

点云侠的博客 244

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C#-WinForm登录窗体实现记住密码的功能(仿QQ实现)

背景Winform实现登录窗体中记住密码的功能,模仿QQ登录记住密码的实现 如下图所示,其中标题部分因为项目保密的原因,我加了马赛克,请大家见谅。 用户名输入框我们采用下拉列表框ComboBox 密码框我们采用textBox,并设置为密码框 设置textBox输入时不显示明文,需要将useSystemPasswordChar改为true,然后multiline设置为false,然后重新

OSKernelLAB(gatieme) 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: VisionPro工具使用--->螺丝个数及宽度检测与显示
下一篇: 正则表达式超详细版
MM_MS
博客等级 码龄1年 58粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MM_MS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值