事件委托 EventHandler 。
事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装
事件的声明
1.声明一个委托
public delegate void EventHandler(object sender, System.EventArgs e);
2.声明一个事件
public event EventHandler Changed;
3.引发一个事件
public OnChanged(EnventArgs e)
{
if ( Changed != null)
{
Changed(this,e);
}
}
4.定义事件处理程序
public MyText_OnChanged(Object sender,EventArgs e)
{
...
}
5.订阅事件(将事件处理程序添加到事件的调用列表中)
myText.Changed += EventHandler(MyText_OnChanged);
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace 事件的委托
- {
- class Program
- {
- static void Main(string[] args)
- {
- MyClass myClass = new MyClass();
- // 6,将事件处理程序添加到事件的调用列表中(即事件布线)
- myClass.Changed += new MyClass.ChangedEventHandler(myText_Changed);
- string str = "";
- while (str != "quit")
- {
- Console.WriteLine("please enter a string:");
- str = Console.ReadLine();
- myClass.Text = str;
- }
- }
- // 对Change事件处理的程序
- private static void myText_Changed(object sender, EventArgs e)
- {
- Console.WriteLine("text has been changed :{0}\n", ((MyClass)sender).Text);
- }
- }
- public class MyClass
- {
- //1,声明空字符传myStr;
- private string myStr = "";
- //2,定义事件的委托
- public delegate void ChangedEventHandler(object sender, EventArgs e);
- //3,定义一个事件
- public event ChangedEventHandler Changed;
- //4,触发事件
- protected virtual void OnChanged(EventArgs e)
- {
- if (this.Changed != null)
- this.Changed(this, e);
- }
- // 5,Text属性
- public string Text
- {
- get { return this.myStr; }
- set
- {
- this.myStr = value;
- // 文本改变时触发Change事件
- this.OnChanged(new EventArgs());
- }
- }
- }
- }
事件委托 EventHandler 。相关推荐
- java eventhandler 触发_事件委托 EventHandler
事件就是当对象或类状态发生改变时,对象或类发出的信息或通知.发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时 ...
- C# 实例解析事件委托之EventHandler
概述 事件属于委托的一个子集,像我们平时界面上的鼠标点击按钮后响应事件.事件的发布和订阅等都需要用到委托.通过委托可以很好的实现类之间的解耦好.事件委托EventHandler的 函数原型如下:del ...
- C# 的 事件 与 EventHandler
事件接受与发送是通过 委托来实现的,随意,在学习事件之前一定要知道委托. 首先我们先看下图:上的图不完整人,但大概是这个意思. 我们要创建一个事件管理. 来处理发布者发送消息和订阅者的接受消息中间转接 ...
- 在C#中使用代理的方式触发事件 (委托和事件 ) (转)
From: http://www.cnblogs.com/gzhnan/articles/1859477.html 在C#中使用代理的方式触发事件 (委托和事件 ) 事件(event)是一个非常重要 ...
- .net 事件委托 java_仿net事件委托的java事件模型实现(转csdn)
作为对比,我们来看看Java Swing的事件处理和委托就要复杂很多:代码如下:(您若还不是很了解Swing事件驱动的话,可以参考我的另外一篇文章:事件驱动模型实例详解(Java篇))://为btnS ...
- Java观察者模式事件委托(通过dota和王者荣耀故事讲解)
故事情景 首先介绍下故事的三位同学,阿顾.蛋蛋和洋洋,蛋蛋,洋洋喜欢玩游戏,但是又生怕班主任回来了被抓到,所以他们就找到了阿顾同学帮他们把风,但是阿顾同学不是谁都通知的,只有到阿顾那里登记的,阿顾同学 ...
- 观察者设计模式 Vs 事件委托(java)
观察者设计模式 Vs 事件委托 标签: 设计模式 java 事件的委托 转载请注明原博客地址: http://blog.csdn.net/gdutxiaoxu/article/details/5182 ...
- dom元素滚动条高度 js_DOM 事件与事件委托
点击事件 <div class = 爷爷><div class = 爸爸><div class = 儿子>文字</div></div> &l ...
- JavaScript:事件冒泡和事件委托
2019独角兽企业重金招聘Python工程师标准>>> JavaScript事件代理和委托(Delegation) JavaScript事件冒泡和事件委托 JavaScript:通过 ...
最新文章
- centos安装mysql wsl_在 Windows Linux 子系统中安装 CentOS
- 前沿丨人工智能的框架战争:FB继续挑战Google
- python画图程序有图-python画图程序
- SAP BDC 技术的分类(转)
- scss支持的嵌套css规则
- php中的break语句格式,PHP中break语句的应用
- 电脑无限重启rpc服务器不可用,StarUML启动时候出现System Error. Code:1722. RPC服务器不可用.错误的解决办法...
- Oracle join
- 详解MySQL的用户密码过期功能
- 【数据科学赛】CAIL 2022 #八赛道 #NLP #文本匹配 #信息抽取
- 在Openwrt 上使用迅雷远程下载功能
- 短线交易有这些特点的,慎做短线交易
- 华清远见嵌入式Linux就业培训班
- springboot/maven-orika 映射
- 做跨境人人都是天秤座,三个月都没能建起一个店铺
- 与NFC相关的几种卡片
- 带上传文件功能的写CSDN博客并发表
- 马云给员工的超牛演讲
- 企业服务已经火了5年了,你们想过没,到底啥叫企业服务
- Crowding Counter 之 可视化h5文件
热门文章
- 用html制作简单日历,用javascript实现一个简单的日历
- java gsoap_gsoap c与java web之间传输字符串中文乱码问题 | 学步园
- fruncm server sql 无法生成 线程_MSSQLSERVER启动不了,报SQL Server 无法生成 FRunCM 线程...
- java综合项目推荐,推荐20个5月最热门的Java开源项目
- python初始化方法对应的变量是全局变量嘛_在Python中初始化全局变量的正确方法...
- gdb 查看结构体地址内容_程序员的术与道:术——gdb基本操作
- 突然决定!自掏腰包送Intel酷睿12代CPU!还有机械键盘、固态硬盘。
- 堆栈verilog设计实现及仿真
- 《FPGA入门教程》看书随笔——数字电路设计入门
- 不礼让行人怎么抓拍的_【交通违法曝光2019年第11期】梅河口市公安局交警大队对电子警察抓拍的88台机动车不礼让行人车辆曝光如下...