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

运行效果:

1. 登录失败:

2. 登陆成功:

总结:

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

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

C#学习笔记(35)——事件做的登录案例的更多相关文章

  1. Hadoop学习笔记(8) ——实战 做个倒排索引

    Hadoop学习笔记(8) ——实战 做个倒排索引 倒排索引是文档检索系统中最常用数据结构.根据单词反过来查在文档中出现的频率,而不是根据文档来,所以称倒排索引(Inverted Index).结构如 ...

  2. 学习笔记---Javascript事件Event、IE浏览器下的拖拽效果

    学习笔记---Javascript事件Event.IE浏览器下的拖拽效果     1. 关于event常用属性有returnValue(是否允许事件处理继续进行, false为停止继续操作).srcE ...

  3. Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 Ihandle<T>

    Caliburn.Micro学习笔记目录 今天 说一下Caliburn.Micro的IEventAggregator和IHandle<T>分成两篇去讲这一篇写一个简单的例子 看一它的的实现 ...

  4. iOS学习笔记--触摸事件

    最近空闲时间在学习iOS相关知识,几周没有更新文章了,今天总结下这些天的学习内容,也整理下iOS的学习笔记,以便以后查阅翻看- iOS中的事件可以分为3大类型: 触摸事件 加速计事件 远程控制事件 响 ...

  5. [JS学习笔记]Javascript事件阶段:捕获、目标、冒泡

    当你在浏览器上点击一个按钮时,点击的事件不仅仅发生在按钮上,同时点击的还有这个按钮的容器元素,甚至也点击了整个页面. 事件流 事件流描述了从页面接收事件的顺序,但在浏览器发展到第四代时,浏览器开发团队 ...

  6. [原创]java WEB学习笔记35:java WEB 中关于绝对路径 和相对路径问题

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  7. vue学习笔记(四)事件处理器

    前言 在上一章vue学习笔记(三)class和style绑定的内容中,我们学习了如何在vue中绑定class和style,介绍了常用的绑定方法,class的数组绑定和对象绑定以及style的数组绑定和 ...

  8. JavaScript高级程序设计学习笔记之事件

    1.事件流 事件流描述的是从页面中接收事件的顺序. 事件冒泡 IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播 ...

  9. ADO.NET学习系列(三)----做一个登录案例

    总体思路.根据用户输入的用户名和密码,来判断,和数据库里面存的是不是一样,如果一样就表明登录成功,否则就登录失败. 方案一: 1.select* from 表名 where username=&quo ...

随机推荐

  1. acm--博弈入门2(P/N分析)--(HDU 1847 HDU 2188 HDU 3863)

    P/N理论 分析博弈时可以用P/N分析法 具体如下: P点:即必败点,某玩家位于此点,只要对方无失误,则必败: N点:即必胜点,某玩家位于此点,只要自己无失误,则必胜. 必败态:一定输 必胜态:一定赢 ...

  2. [Codeforces394B]Very Beautiful Number(逆推)

    退役了吗? 退役了…… 但是以后也许还不会一下子离开OI吧 因为我真的很喜欢OI啊 只是实力不如人 为了考上一个学OI的高中 要努力啊! [本题] 一道很好的题目了(刷CF题看到的) 和394A一样, ...

  3. 3ds max学习笔记-- 灯光调节

    8,软件内默认有两盏灯,在渲染时不产生投影和高光点.手动添加灯光时,系统灯光自动关闭: 1,标准灯光:聚光灯,平行光,泛光 ,天光: a,聚光灯:目标聚光灯和自由聚光灯,当目标聚光灯的[目标]取消勾选 ...

  4. python生成字符画

    python生成字符画 这个idea来自于实验楼,非常适合练习PIL的像素处理,更重要的是非常有意思. 环境配置 依赖的第三方库就是PIL(Python Image Library),可以直接使用pi ...

  5. Mybatis批量插入返回自增主键(转)

    我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键: 1.对于支持生成自增主键的数据库:useGenerateKeys和keyProperty. 2.不支持生成自增主键的数据库:< ...

  6. db2 执行报错收集

    1.对于执行中的报错,可以在db2命令行下运行命令 : db2=>? SQLxxx 查看对应的报错原因及解决方法. 2.错误SQL0206N SQLSTATE=42703  检测到一个未定义的列 ...

  7. Network Monitoring in Software-Defined Networking :A Review(综述)

    来源:IEEE SYSTEMS JOURNAL 发表时间:2018 类型:综述 主要内容:概述了SDN监控的发展,并从收集信息.预处理.传送信息.分析.和描述五个阶段进行解读,并比较了传统网络和SDN ...

  8. JSP(1)—基础知识

    JSP(1)-基本知识 起源 在很多动态网页中绝大多数网页都是固定不变的只有局部内容需要动态产生和改变,如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的的静态内容,也需要程序 ...

  9. IO流(2)—知识结构

    结构: 注:此IO包下主要介绍: 节点流:(字节流)FileInputStream.FileOutputStream.(字符流)Filereader.FileWriter 处理流(缓冲流):(字节流) ...

  10. 使用Qemu运行Ubuntu文件系统(1)

    参考 https://blog.csdn.net/mountzf/article/details/51707853 https://blog.csdn.net/stephen_lu_fahai/art ...