C#学习笔记(35)——事件做的登录案例

摘要:
注意:1.首先,自定义登录控件。您可以输入帐户和密码,然后单击“登录”。然后将此控件拖到Form1中。如果需要正确输入帐户和密码,请单击“登录”。控件将显示绿色,否则将显示红色.ucLogin。cs:使用系统;使用System.Collections。通用的使用系统。组件模型;使用系统。绘画使用系统。数据使用系统。Linq;使用系统。文本使用System.Threading。任务;使用System.Windows。形式;namespace_07事件的登录事例{publicpartialclassucLogin:UserControl{publicucLogin(){InitializeComponent();}//1.定义事件publiceventEventHandlerMyEve;privatevoidbtnOK_单击{MyEventArgsmea=newMyEventArgs();mea.Name=txtName.Text;mea.Pwd=txtPwd.Text;//3.调用事件如果(MyEve!=null){MyEve;}如果{this.BackColor=Color.Green;MessageBox.Show;}否则{this.BackColor=Color.Red;MessageBox.Show;}}//声明MyEventArgs类以存储帐户、密码以及登录是否成功。三个参数publicclassMyEventArgs:EventArgs{//构造方法使IsOK的初始值为false publicstringName{get;set;}publicstringPwd{get;set;}publicboolIsOK{get;set;}}表单1.cs:usingSystem;使用System.Collections。通用的使用系统。组件模型;使用系统。数据使用系统。绘画使用系统。Linq;使用系统。文本使用System.Threading。任务;使用System.Windows。形式;namespace_07事件的登录事例{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidForm1_Load{//2.绑定事件//双击tab键自动生成ucLogin1_MyEve方法ucLogin1.MyEve+=ucLoginl_MyEve;}voiducLogin1_MyEve{//这句话是最重要的一句话。有必要将e-Force转换为MyEventArgs!

说明(2018-4-9 20:11:42):

1. 先自定义了一个登录控件,可以输入账号、密码,点击登录。然后在Form1里面拖入这个控件,要求输入账号密码正确时,点击登录,控件显示绿色,否则显示红色。

2. 用事件来把控件里的账号和密码传值给Form1窗体,可以省略委托的定义过程那一行代码(public delegete void MyDel())直接用public event EventHandler MyEve。

3. 与委托的不同在于,事件里有两个参数(object sender, EventArgs e),sender用this就可以,e的话,要自己建一个类MyEventArgs,继承EventArgs,用它的属性来传递参数(账号、密码)。

4. 在Form1里的MyEve绑定的方法里,需要把e替换成mea,不然获取不到传过来的参数(账号、密码),MyEventArgs mea = e as MyEventArgs;就是这句代码。

5. 最后一点,如果是让把Form1整个窗体改变颜色,在Form1的绑定方法里直接this.BackColor赋值就可以了。如果是只让控件改变颜色,就需要返回一个bool值,让控件自己判断。例子中是给MyEventArgs类增加一个IsOK属性,并且初始值设为False,在Form1中判断登录成功的同时,讲IsOK的值设为True,在控件中改变颜色。

ucLogin.cs(控件代码):

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

namespace _07事件做的登录案例
{
    public partial class ucLogin : UserControl
    {
        public ucLogin()
        {
            InitializeComponent();
        }
        //1.定义事件
        public event EventHandler MyEve;
        private void btnOK_Click(object sender, EventArgs e)
        {
            MyEventArgs mea = new MyEventArgs();
            mea.Name = txtName.Text;
            mea.Pwd = txtPwd.Text;
            //3.调用事件
            if (MyEve != null)
            {
                MyEve(this, mea);
            }
            if (mea.IsOK == true)
            {
                this.BackColor = Color.Green;
                MessageBox.Show("登录成功");
            }
            else
            {
                this.BackColor = Color.Red;
                MessageBox.Show("登录失败");
            }
        }

    }
    //声明一个MyEventArgs类存放账号、密码、是否登陆成功,三个参数
    public class MyEventArgs : EventArgs
    {
        //构造方法,使IsOK初始值为false
        public MyEventArgs()
        {
            IsOK = false;
        }
        public string Name { get; set; }
        public string Pwd { get; set; }
        public bool IsOK { get; set; }


    }
}

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;

namespace _07事件做的登录案例
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //2.绑定事件
            //两下tab键自动生成ucLogin1_MyEve方法
            ucLogin1.MyEve += ucLogin1_MyEve;
        }

        void ucLogin1_MyEve(object sender, EventArgs e)
        {
            //这句是最重要的,要把e强转为MyEventArgs类型!
            MyEventArgs mea = e as MyEventArgs;

            if (mea.Name == "123" && mea.Pwd == "123")
            {
                //这个是把整个Form1改变颜色,比较简单。现在的代码是把“是否登陆成功”的信息返回,改变控件的颜色。
                //this.BackColor = Color.Green;
                //MessageBox.Show("登录成功");
                mea.IsOK = true;
            }
            else
            {
                //this.BackColor = Color.Red;
                //MessageBox.Show("登录失败");
                //这个不用给IsOK赋值,默认就是false
            }
        }
    }
}

运行效果:

1. 登录失败:

 C#学习笔记(35)——事件做的登录案例第1张

 

2. 登陆成功:

C#学习笔记(35)——事件做的登录案例第2张

总结:

1. 终于找到一个详细讲解事件这两个参数应用的视频了,21期->.net核心透析->2015.1.5基础加强,我觉得我快要悟道了^_^。

2. 再把窗体传值那个用事件实现一下。

 

免责声明:文章转载自《C#学习笔记(35)——事件做的登录案例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS地图及定位功能基本实现的详尽描述什么是FullStack设计下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

WebStorm好用的插件推荐

随着时间的推移,编写JavaScript代码很多有用的插件都集成了WebStorm中,在WebStorm中即使不装任何插件,都能很舒服的进行开发网页应用、Node应用。插件对于WebStorm并不是特别的重要,但是某些插件实在是比较好用,所以本篇文章就整理一下比较好用的插件。使用该插件,可以直接在WebStorm中内嵌一个翻译界面。...

echarts使用技巧(一)echarts的图表自适应resize问题、单选、缩放等

因此,当浏览器发生调整大小事件时,让它触发rechart调整大小事件来重新绘制画布。使用窗口。resize=myChart resize;通过将窗口的调整大小事件分配给回声调整大小事件,可以实现自适应。当然,这是单一图表的情况。如果有多个图表,它将无法工作。...

IAR for STM8的简介、下载、安装及注册教程

就个人而言,IARforSTM8与Keil没有太大区别。只要您熟悉Keil的用法,就不难开始使用IARforSTM8。互联网上也有许多相关信息。您可以从我的百度云下载IARforSTM8并注册机器!!!链接:https://pan.baidu.com/s/16UHwCZkgONEeLwiwBawAhg提取代码:gvj9 II。下载IARforSTM8软件1....

【646】灰度图array转为RGB三通道array

可以使用两种方法:numpy可以通过cv2.cvtColor函数自行实现。灰度图像可以转换为RGB的所谓灰度图像,分成三个通道,这意味着三个通道都是相同的信息,相当于相同维度信息的重复。主要通过numpy实现。阵列,其可以类似于广播的形式实现。...

【原生】CocosCreator Android和游戏的通讯 (Java和TS互相调用、传递JSON数据、监听返回键)

Cocos版本:2.4.4参考:Cocos文档-Java原生反射机制Cocos文档-JSB使用指南-在Cocos中调用Android方法2在Android中调用Cocos方法3传输JSON数据4倾听返回键5 Cocos和Android相互调用时遇到的问题,TypeScript方法可以在Java中调用,Java方法可以在TypeScript中调用。在Cocos...

Uni-app v-on监听事件

使用标记上的v-on监视事件。缩写为@click common click events方法:方法:{Focus(){console.log;},blur(){console.log;},confirm(){console.log;},click(){console.log;},tap(){console.log;},longpress(){console....