C#练习委托、事件、事件处理
控制台应用程序效果:

代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace MyEventTest
{
class Program
{
/// <summary>
/// 第一步 新建委托需要的带参数的类,属于事件的参数的子类
/// </summary>
public class MyClassEventArgs : EventArgs
{
private string name; public string Name
{
get { return name; }
set { name = value; }
}
private int age; public int Age
{
get { return age; }
set { age = value; }
} } /// <summary>
/// //第二步 新建一个带参数的委托
/// </summary>
/// <param name="sender">触发源</param>
/// <param name="mc">参数</param>
public delegate void MyDelegate(object sender,MyClassEventArgs mc); /// <summary>
/// 第三步 新建一个会触发事件的类
/// </summary>
public class Custom
{
/// <summary>
/// 第四步 新建一个委托发生时触发的事件
/// </summary>
public event MyDelegate Shout; private string name; public string Name
{
get { return name; }
set { name = value; }
}
private int age; public int Age
{
get { return age; }
set { age = value; }
} public Custom()
{ } public Custom(string n, int a)
{
name = n;
age = a;
} public void Buy()
{
Console.WriteLine("{0}:我要来买东西!",this.name); //第五步 在方法中关联事件
MyClassEventArgs mcea = new MyClassEventArgs();
mcea.Name = name;
mcea.Age = age;
if (Shout != null)
{
Shout(this,mcea);
}
}
} /// <summary>
/// 第六步 新建一个事件发生后要执行的类
/// </summary>
public class Reporter
{
public void Notify(object sender, MyClassEventArgs mcea)
{
Console.WriteLine("老板:小白快去接客了,客户名字叫{0},年龄{1}岁",mcea.Name,mcea.Age);
}
} /// <summary>
/// 第七步 做一种触发事件的情况,并把事件和事件的处理关联起来
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
Custom c1 = new Custom("大美女",);
Reporter r1 = new Reporter(); c1.Shout +=new MyDelegate(r1.Notify); c1.Buy();
}
}
}
C#练习委托、事件、事件处理的更多相关文章
- C#委托,事件理解入门 (译稿)
原文地址:http://www.codeproject.com/Articles/4773/Events-and-Delegates-Simplified 引用翻译地址:http://www.cnbl ...
- JavaScript中事件委托(事件代理)详解
在JavaScript的事件中,存在事件委托(事件代理),那么什么是事件委托呢? 事件委托在生活中的例子: 有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快递:二是委托 ...
- python 全栈开发,Day55(jQuery的位置信息,JS的事件流的概念(重点),事件对象,jQuery的事件绑定和解绑,事件委托(事件代理))
一.jQuery的位置信息 jQuery的位置信息跟JS的client系列.offset系列.scroll系列封装好的一些简便api. 一.宽度和高度 获取宽度 .width() 描述:为匹配的元素集 ...
- Js 中的事件委托/事件代理
什么叫事件委托/事件代理呢 ? JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件. 事件冒泡: 当事件发生后,这个事件就要开始传 ...
- 理解jquery on 委托事件的机制
前两天做了一个点击任意位置,都能关闭菜单的功能,因为菜单里面的每一个a,的点击事件都是用on绑定的.所以在阻止冒泡的时候不管用,今天特意来理解一下on的机制 on 是委托事件,利用的就是冒泡原理 $( ...
- C# ~ 从 委托事件 到 观察者模式 - Observer
委托和事件的部分基础知识可参见 C#/.NET 基础学习 之 [委托-事件] 部分: 参考 [1]. 初识事件 到 自定义事件: [2]. 从类型不安全的委托 到 类型安全的事件: [3]. 函数指针 ...
- 关于ios使用jquery的on,委托事件失效
$('.parents').on("click",'.child',function(){}); 类似上面这种,在ios上点击"child"元素不会起作用,解决 ...
- Observer设计模式中-委托事件-应用在消息在窗体上显示
Observer设计模式:监视者模式.在类中的方法中处理的结果或者消息通过事件委托 的方式发送给主窗体. 因为在其它类中直接访问主窗体类,显示内容是不能直接调用控件赋值的,当然也有别的类似查阅控件名, ...
- Asp.net用户控件和委托事件
在Asp.net系统制作过程中,门户类型的网站,我们可以用DIV+CSS+JS+Ajax全部搞定,但是一旦遇到界面元素比较复杂的时候,还是UserControl比较方便一些,各种封装,各种处理,然后拖 ...
- jQuery里面的普通绑定事件和on委托事件
以click事件为例: 普通绑定事件:$('.btn1').click(function(){}绑定 on绑定事件:$(document).on('click','.btn2',function(){ ...
随机推荐
- C++11之function模板和bind函数适配器
在C++98中,可以使用函数指针,调用函数,可以参考之前的一篇文章:类的成员函数指针和mem_fun适配器的用法. 简单的函数调用 对于函数: void foo(const string &a ...
- 一个RecycleView的强大adapter
代码地址如下:http://www.demodashi.com/demo/12218.html 前言 一般我们要在mainActivity中利用RecycleView展示一个列表数据的时候,adapt ...
- [Hibernate开发之路](2)Hibernate问题
(1)数据库驱动问题 log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). log4j: ...
- win10 microsoft edge 浏览器收藏夹位置
1.打开文件夹,找到(注意 用户名 改为你自己的用户名) C:\Users\用户名\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bb ...
- Android给力模拟器,秒杀原生模拟器到渣
1 http://www.eoe.cn/news/17433.html?f_section=new&f_section=new 备注:1秒开机,操作超流畅
- java.long中的类和方法
java.lang.Character.isUpperCase(char ch) 确定指定的字符是否为大写字符. java.lang.Character.toUpperCase()方法用法转换从Uni ...
- angularjs中的时间格式化过滤
本地化日期格式化: ({{ today | date:'medium' }})Nov 19, 2015 3:57:48 PM ({{ today | date:'short' }})11/19/15 ...
- storm RollingTopWords 实时top-N计算任务窗口设计
转发请注明原创地址 http://www.cnblogs.com/dongxiao-yang/p/6381037.html 流式计算中我们经常会遇到需要将数据根据时间窗口进行批量统计的场景,窗口性质一 ...
- [译]NeHe教程 - 你的第一个多边形
原文: Your First Polygon 在第一节中我讲解了如何创建OpenGL窗体.本节我会讲解如何创建三角形和四边形.我们会用GL_TRIANGLES来创建三角形,用GL_GUADS创建四边形 ...
- PathInfo模式的支持
pathinfo,一种伪静态的用法, 1.让 Apache 支持 PathInfo 配置的 Apache 版本 : 2.2.13 在配置文件中加入 <Files *.php> Accept ...