精华内容
下载资源
问答
  • = null) { if (line.Contains(name)) { MessageBox.Show("账号已存在,请重新输入", "注册提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation); return; } line = sr.ReadLine(); } sr.Close(); ...

    在这里插入图片描述
    代码:

    public partial class LoginForm : DevExpress.XtraEditors.XtraForm
        {
            public LoginForm()
            {
                Logger.RecordInfo("初始化登录页面");
                InitializeComponent();
            }
    
            //用户登录,验证账号密码
            private void simpleButton1_Click(object sender, EventArgs e)
            {
                Boolean boo = CheckedPassword();
                if (boo)
                {
                    this.DialogResult = DialogResult.OK;
                    //this.Close();//当前页面关闭
                    
                }
                else {
                    MessageBox.Show("用户名或密码不正确", "登录提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                }
            }
    
            /**
             * 注册账号,必须输入管理员账号,密码
             * */
            private void simpleButton2_Click(object sender, EventArgs e)
            {
                string name = textEdit1.Text;
                string password = textEdit2.Text;
                if ("admin".Equals(name) && "cars@123".Equals(password))
                {
                    RegisterForm registerForm = new RegisterForm();
                    registerForm.Show();
                }
                else {
                    MessageBox.Show("管理员账号,密码不匹配", "注册提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                }
            }
    
            //修改密码
            private void simpleButton3_Click(object sender, EventArgs e)
            {
                ChangePassword changePassword = new ChangePassword();
                changePassword.Show();
            }
    
            //对字符串进行加密
            public static string CipherText(string proclaimText)
            {
                if (null == proclaimText || "".Equals(proclaimText)) {
                    return proclaimText;
                }
    
                byte[] proclaimBytes = UnicodeEncoding.BigEndianUnicode.GetBytes(proclaimText);
                int proclaimBytesCount = proclaimBytes.Length;
                byte[] cipherBytes = new byte[proclaimBytesCount * 2];
    
                for (int i = 0; i < proclaimBytesCount; i += 2)
                {
                    byte proclaimByte = proclaimBytes[i];
                    int upperByte = proclaimByte & 0xf0;
                    int lowerByte = proclaimByte & 0x0f;
                    upperByte = upperByte >> 4;
                    lowerByte = lowerByte << 4;
    
                    byte proclaimByte2 = proclaimBytes[i + 1];
                    int upperByte2 = proclaimByte2 & 0xf0;
                    int lowerByte2 = proclaimByte2 & 0x0f;
                    upperByte2 |= upperByte;
                    lowerByte2 |= lowerByte;
    
                    cipherBytes[i * 2] = 0x4e;
                    cipherBytes[i * 2 + 1] = Convert.ToByte(upperByte2);
                    cipherBytes[(i + 1) * 2] = 0x4f;
                    cipherBytes[(i + 1) * 2 + 1] = Convert.ToByte(lowerByte2);
                }
                return UnicodeEncoding.BigEndianUnicode.GetString(cipherBytes, 0, cipherBytes.Length);
            }
    
            //对字符串进行解密
            public static string DoProclaimText(string CipherText)
            {
                if (null == CipherText || "".Equals(CipherText))
                {
                    return CipherText;
                }
    
                byte[] cipherBytes = UnicodeEncoding.BigEndianUnicode.GetBytes(CipherText);
                int cipherBytesCount = cipherBytes.Length;
    
                byte[] proclaimBytes = new byte[cipherBytesCount / 2];
    
                for (int i = 0; i < cipherBytesCount; i += 4)
                {
                    byte cipherByte1 = cipherBytes[i + 1];
                    byte cipherByte2 = cipherBytes[i + 3];
    
                    int lowerByte = (cipherByte1 & 0x0f) << 4;
                    int upperByte = cipherByte1 & 0xf0;
    
                    int lowerByte2 = cipherByte2 & 0x0f;
                    int upperByte2 = (cipherByte2 & 0xf0) >> 4;
    
                    proclaimBytes[i / 2] = Convert.ToByte(lowerByte | upperByte2);
                    proclaimBytes[i / 2 + 1] = Convert.ToByte(upperByte | lowerByte2);
                }
                return UnicodeEncoding.BigEndianUnicode.GetString(proclaimBytes, 0, proclaimBytes.Length);
            }
    
            //校验密码
            private Boolean CheckedPassword() {
                string name = textEdit1.Text;
                string password = textEdit2.Text;
                if ("".Equals(name) || "".Equals(password))
                {
                    MessageBox.Show("用户名或者密码不能为空", "登录提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                }
                else
                {
                    name = CipherText(name);
                    password = CipherText(password);
    
                    string strFilePath = AppDomain.CurrentDomain.BaseDirectory;
                    StreamReader sr = new StreamReader(strFilePath + "\\password.txt");
                    string line = sr.ReadLine();
                    while (null != line && !"null".Equals(line))
                    {
                        if (line.Contains(name))
                        {
                            string pass = line.Split(' ')[1];       //获得密码
                            if (password.Equals(pass))
                            {
                                sr.Close();
                                //密码正确,进入下一个页面
                                return true;
                                //break;
                            }
                        }
                        line = sr.ReadLine();
                    }
                    sr.Close(); 
                }
                return false;
            }
    
          
    
        }
    

    其中有对密码的加密功能,只是在本地保存了一个文本文件,没有使用数据库,如果使用数据库的话,那就存在数据库里,用不用加密都可以。
    在这里插入图片描述

    public partial class RegisterForm : Form
        {
            public RegisterForm()
            {
                Logger.RecordInfo("注册账号");
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string name = textBox1.Text;
                string password = textBox2.Text;
                string passwordCopy = textBox3.Text;
                if (name.Length > 5 && password.Length > 5 && passwordCopy.Length > 5)
                {
                    if (password.Equals(passwordCopy))
                    {
                        name = LoginForm.CipherText(name);  //对账号密码进行加密
                        password = LoginForm.CipherText(password);
                        string strFilePath = AppDomain.CurrentDomain.BaseDirectory;
                        StreamReader sr = new StreamReader(strFilePath + "\\password.txt");
                        string line = sr.ReadLine();
                        while (line != null)
                        {
                            if (line.Contains(name))
                            {
                                MessageBox.Show("账号已存在,请重新输入", "注册提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation); 
                                return;
                            }
                            line = sr.ReadLine();
                        }
                        sr.Close();
                        StreamWriter sw = File.AppendText(strFilePath + "\\password.txt");
                        sw.WriteLine(name + " " + password);
                        sw.Close();
                        MessageBox.Show("注册成功");
                        this.Close();
                    }
                    else {
                        MessageBox.Show("两次输入密码不相同", "注册提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                    }
                }
                else {
                    MessageBox.Show("账号,密码长度不合法", "注册提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                }
            }
        }
    

    在这里插入图片描述

    public partial class ChangePassword : Form
        {
            public ChangePassword()
            {
                Logger.RecordInfo("修改密码界面");
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string name = textBox1.Text;
                string oldPassword = textBox2.Text;
                string newPassword_1 = textBox3.Text;
                string newPassword_2 = textBox4.Text;
                if (oldPassword.Length < 6 || newPassword_1.Length < 6 || newPassword_2.Length < 6 || name.Length < 6) {
                    MessageBox.Show("账号或密码长度不合法!", "警告提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                    return;
                }
                if (!newPassword_1.Equals(newPassword_2)) {
                    MessageBox.Show("两次输入密码不一致!", "警告提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                    return;
                }
                if (oldPassword.Equals(newPassword_1)) {
                    MessageBox.Show("新旧密码不能相同!", "警告提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                    return;
                }
                string strFilePath = AppDomain.CurrentDomain.BaseDirectory;
                StreamReader sr = new StreamReader(strFilePath + "\\password.txt");
                string text = "";
                string line = sr.ReadLine();
                while (null != line)
                {
                    text = text + line + "\r\n";
                    line = sr.ReadLine();
                }
                sr.Close();
                if (text.Contains(CipherText(name) + " " + CipherText(oldPassword)))
                {
                    text = text.Replace(CipherText(name) + " " + CipherText(oldPassword), CipherText(name) + " " + CipherText(newPassword_1));
                    StreamWriter sw = new StreamWriter(strFilePath + "\\password.txt");
                    sw.Write(text);
                    sw.Close();
                    MessageBox.Show("密码修改成功");
                    this.Close();
                }
                else {
                    MessageBox.Show("旧账号密码不匹配!", "警告提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation);
                }
    
    
            }
    
            
        }
    

    再来一个main方法的登录验证机制:

    static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                LoginForm loginForm = new LoginForm();
                if (loginForm.ShowDialog() == DialogResult.OK) {
                    Application.Run(new MainForm());
                }
                //Application.Run(new LoginForm());
            }
        }
    

    全部完成!!!

    展开全文
  • winform注册代码

    2015-07-22 11:51:53
    //注册 private void button2_Click(object sender, EventArgs e) { //连接数据库 String MySqlconnection = @"data source=10.72.4.206;database=bai test;user id=root;password=root"; //创建数据库连接 ...
  • Winform界面之间传值

    2019-04-10 21:06:00
    通过系统自带的事件传值 public event EventHandler SendMsgEvent;//使用默认的事件处理委托 Form2 f2=new Form();...//为子窗体注册事件 f2.Show(); SendMsgEvent(this,new MyEventArg(){Text=this.txtMsg.Tex...

    通过系统自带的事件传值 

    public event EventHandler SendMsgEvent;//使用默认的事件处理委托
    Form2 f2=new Form();
    SendMsgEvent+=f2.MainFormTxtChaed;//为子窗体注册事件
    f2.Show();
    SendMsgEvent(this,new MyEventArg(){Text=this.txtMsg.Text});
    
    
    internal void MainFormTxtChaned(object Sender,EventArgs e){
      MyEventArg arg=e as MyEventArg;
      this.SetText(arg.Text);
    }
    
       public void SetText(string txt)
            {
                this.txtMsg.Text = txt;
            }
     public void AfterParentFrmTextChange(object sender, EventArgs e)
            {
                //拿到父窗体的传来的文本
                MyEventArg arg = e as MyEventArg;
                this.SetText(arg.Text);
            }

    通过保存对象的引用调用的对象的公有方法实现窗体的传值

     public ObeserverFormA ChildFormA { get; set; }
      public ObeserverFormB ChildFormB { get; set; }
       ObeserverFormA childFormA = new ObeserverFormA();
                ChildFormA = childFormA;
                childFormA.Show();
                ObeserverFormB childFormB = new ObeserverFormB();
                ChildFormB = childFormB;
                childFormB.Show();
     ChildFormA.SetText(this.txtMsg.Text);
                ChildFormB.SetText(this.txtMsg.Text); 
    

    定义发布消息的委托  委托是一个类型 委托可以在外部获得执行

     public Action<string> SendMsg { get; set; } 
     ObeserverFormA childFormA = new ObeserverFormA();
                SendMsg += childFormA.SetText;//委托赋值
                childFormA.Show();
                ObeserverFormB childFormB = new ObeserverFormB();
                SendMsg += childFormB.SetText;
                childFormB.Show(); 
     if (SendMsg!=null)
                {
                    SendMsg(this.txtMsg.Text);//执行所有注册的委托
                }

    链接:https://pan.baidu.com/s/114V3u7GYEtDbWYkf0fSjyg 
    提取码:no94 
     

    展开全文
  • winform 界面库SunnyUI初次使用

    千次阅读 2020-11-01 18:32:56
    上次做了个winform的三层架构程序; https://blog.csdn.net/bcbobo21cn/article/details/109417884 下面用界面库来美化一下;SunnyUI库; 相关资源如下;到第二个注册然后下载zip; Blog: ...

    上次做了个winform的三层架构程序;

    https://blog.csdn.net/bcbobo21cn/article/details/109417884

    下面用界面库来美化一下;SunnyUI库;

    相关资源如下;到第二个注册然后下载zip;

    Blog: https://www.cnblogs.com/yhuse
    Gitee: https://gitee.com/yhuse/SunnyUI
    GitHub: https://github.com/yhuse/SunnyUI
    帮助文档目录: https://www.cnblogs.com/yhuse/p/SunnyUI_Menu.html 

    下载,解压;有个dll;

    打开SharpDevelop,在工具箱添加一个tab; 

    把dll加到工具箱;此工具操作比VS简陋些; 

    控件加出来了; 

    把前文程序的控件替换;运行了看一下效果;看上去还不错; 

    它的textbox我还不知道怎么用,画不到窗体上;下面是它的界面组件演示;下载里有demo; 

    目前我感觉这个还是可以;简单好用;相比telerik,telerik有时环境要整好长时间;还不了解它的授权协议;

    展开全文
  • 以管理员身份打开该程序 进行注册,第二步:将设计好的 DevExpress15.1 找到工程项目中“Properties”目录下的“Assemblylnfo.cs”里的“licenses.licx”双击打开, 将内容修改为如下代码:DevExpress.Patc

    本文内容为个人总结,不保证完全适用。


    第一步:在网上下载 破解工具 DevExpress.Patch 7.0-by dimaster
    这里写图片描述

    以管理员身份打开该程序 进行注册,


    第二步:将设计好的 DevExpress15.1 找到工程项目中“Properties”目录下的“Assemblylnfo.cs”里的“licenses.licx”双击打开,
    将内容修改为如下代码:

    DevExpress.Patch.InMemoryPatch, DevExpress.Patch.Common, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7fc7bfca2443de66
    DevExpress.XtraEditors.PictureEdit, DevExpress.XtraEditors.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraCharts.ChartControl, DevExpress.XtraCharts.v15.1.UI, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraEditors.RangeTrackBarControl, DevExpress.XtraEditors.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraEditors.TileControl, DevExpress.XtraEditors.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraBars.Ribbon.GalleryControl, DevExpress.XtraBars.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.Snap.SnapControl, DevExpress.Snap.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.Snap.Extensions.SnapDockManager, DevExpress.Snap.v15.1.Extensions, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraEditors.ImageComboBoxEdit, DevExpress.XtraEditors.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v15.1, Version=15.1.7.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
    

    然后再次运行你的DevExpress15.1 窗体程序便不会弹出未注册的框了。
    内容仅供学术交流。用于项目开发还请购买官方正版软件。

    展开全文
  • 这里使用到dsoframer.ocx插件 ...2.注册该插件 Win7的做法是按住Win + R 键,调出运行regsvr32 C:\dsoframer.ocx,文件路径若不同,只需要修改路径即可 3. 注册完毕之后进入VS,在工具箱中添加COM组件DSO F...
  • 上一篇文章给出了Login登录界面的详细制作过程,目的...搭建注册界面及文档大纲窗口我将程序注册界面也放在Login窗体中,以一个Panel的形式显示。并且注册没有诸多验证,只设置昵称和密码即可,账号由程序随机生成。...
  • C#winform小程序,主要功能模块为登录和注册,带验证码,界面经过美化。 C#winform小程序,主要功能模块为登录和注册,带验证码,界面经过美化。
  • 所有AutoCAD文件的CADViewer,guthrie CADViewer 2018支持最新的...易于查看和打印所有AutoCAD DWG/ DXF / DWF格式的文件,包括AutoCAD2019和PDF无需注册即可下载和使用快速下载和简单安装即时加载和打印CAD图纸将C...
  • 基本功能:将客户端的一些注册信息发送到服务端显示,并存储在Mysql数据库中。服务端在线列表显示当前在线客户端,详情见代码。客户端代码:https://paste.ubuntu.com/p/YKyBphC4TD/ using System; using System....
  • 上一篇文章给出了Login登录界面的详细制作过程,目的...搭建注册界面及文档大纲窗口我将程序注册界面也放在Login窗体中,以一个Panel的形式显示。并且注册没有诸多验证,只设置昵称和密码即可,账号由程序随机生成。...
  • 用 写的一个简单的登录及注册的小程序 1, 首先设计登录界面共有三个如下 上图登录及注册为 linklabel 控件其他为 label 控件 ; 上图为登陆界面两个 textbox 文本输入框注册为 linklabel 控件 界面设计很简单不说了 2...
  • 登录需求很常见,不管BS项目还是CS项目,你几乎都需要一个登录界面来开启你的项目。登录时通过查询验证数据库的用户名和密码,来判断是否登录成功。那么一个完整的登录过程需要有哪几步呢? 1,登录界面(Login): ...
  • c#连接sql server数据库,实现用户的注册winform程序) 实验环境 Visual Studio 2015 + SQL Server 2014 Management Studio winform界面
  • 3:客户收到机器码后,再软件注册界面,输入机器码,点击注册,使用SoftReg 类获取当前的机器码与用户输入机器码是否一致。 二、在线网络注册版本 1:客户将唯一机器码发给开发人员: 2:软件公司后台数据库服务器...
  • winform高仿腾讯QQ2013,几十个界面哦!!

    千次阅读 2013-10-02 18:19:45
    哎.没学过ps.所以一些按钮上的图片都...③注册界面:(嗯.我表示就这个界面最漂亮) ④主界面(分组): ⑤主界面(好友): ⑥主界面(鼠标停留--好友信息): ⑦主界面(群组): ⑧主界面(退出): ⑨好友聊天界面:
  • WinForm 托盘控制应用

    2019-10-01 09:51:21
    创建一个WinForm程序,界面如下(很简单): (2).主要实现代码:(注册表开机启动位置:SOFTWARE\Microsoft\Windows\CurrentVersion\Run) /// <summary> /// 根据注册名称和路径判断是否已注册 //...
  • 一、开发目的了解和掌握三层架构,实现注册和登录功能二、开发环境Visual Studio 2017,SQL Server 2012,windows7三、相关知识1.三层架构 所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫...
  • 场景 ...DevExpress 开发的控件有很强的实力,不仅功能丰富,应用简便,而且界面华丽,更可方便定制。 DevExpress控件中文网 https://www.devexpresscn.com/ DevExpress中文帮助文档 https:/...
  • Winform应用程序简介

    2019-09-26 20:11:54
    1.winform应用程序是一种智能客户端技术,我们可以使用winform应用程序帮助我们获得信息或传输信息等。 WPF技术——XAML美化界面。 2. F4快速属性 (1)Name:在后台要获得前台的控件对象,需要使用Name属性。 ...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 132
精华内容 52
关键字:

winform注册界面