C#事件机制(记住流程)

转自:http://jimmyloveforever.blog.163.com/blog/static/119775247200951303935836/

1,C#事件机制是基于委托实现的,因此要首先定义一个委托EventHandler

                       public delegate void EventHandler(object from , myEventArgs e) 

  System.EventArgs是包含事件数据的类的基类,在代码中可直接使用EventArgs类。
myEventArgs类派生于EventArgs类,实现自定义事件数据的功能。这里from表示发生事件的对象。 
2,定义事件格式为:

           event 事件的委托名 事件名 

如事件TextOut定义: 
     public event EventHandler TextOut; 
3,事件的激活一般写成: 
        if (TextOut != null) 
                   TextOut(this,new EventArgs()); 
 检查TextOut事件有没有被订阅,如不为null,则表示有用户订阅。订阅事件的是 
TestApp类,首先实例化EventSource,然后订阅事件: 
evsrc.TextOut += new  EventSource.EventHandler(CatchEvent); 
也可以取消订阅: 
evsrc.TextOut -= new  EventSource.EventHandler(CatchEvent); 

View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;// 定义事件包含数据 
public class MyEventArgs : EventArgs
{private string StrText;public MyEventArgs(string StrText){this.StrText = StrText;}public string GetStrText{get{return StrText;}}
}
// 发布事件的类 
class EventSource
{MyEventArgs EvArgs = new MyEventArgs("触发事件");// 定义委托 public delegate void EventHandler(object sender, MyEventArgs e);// 定义事件 public event EventHandler TextOut;// 激活事件的方法 public void TriggerEvent(){if (TextOut == null)TextOut(this, EvArgs);}
} 
// 订阅事件的类 
class TestApp
{public static void Main(){EventSource evsrc = new EventSource();// 订阅事件 evsrc.TextOut += new EventSource.EventHandler(CatchEvent);// 触发事件 
        evsrc.TriggerEvent();Console.WriteLine("------");// 取消订阅事件 evsrc.TextOut -= new EventSource.EventHandler(CatchEvent);// 触发事件 
        evsrc.TriggerEvent();Console.WriteLine("------");  // 事件订阅已取消,什么也不执行 TestApp theApp = new TestApp();evsrc.TextOut += new EventSource.EventHandler(theApp.InstanceCatch);evsrc.TriggerEvent();Console.WriteLine("------");}// 处理事件的静态方法 public static void CatchEvent(object from, MyEventArgs e){Console.WriteLine("CatchEvent:{0}", e.GetStrText);}// 处理事件的方法 public void InstanceCatch(object from, MyEventArgs e){Console.WriteLine("InstanceCatch:{0},e.GetStrText");}
}

 

转载于:https://www.cnblogs.com/anbylau2130/archive/2013/02/21/2920687.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio 安装配置问题总结

之前一直都是使用Eclipse写Android的,但一直都有听说Android Studio是一个更好的用于开发Android的软件,之前其实也有保存过一些别人写的安装和配置Android Studio的一些教程,在这里也列出来:Android Studio 入门指南;…

说说mysql_说说MySQL权限 - andyqian的个人空间 - OSCHINA - 中文开源技术交流社区

本文首发于个人微信公众号《andyqian》,期待你的关注~前言今天继续MySQL系列文章,讲讲MySQL权限相关的内容。我们都知道,在写系统的时候,都会有权限相关的服务,以达到权限控制的目的。以最简单的权限菜单为例&#xff…

[机器学习笔记] Note1--机器学习简介

阅读本文大约需要 2 分钟 本文结构: 什么是机器学习监督学习(Supervised Learning)非监督学习(Unsupervised Learning)课程小结 这是学习 Andrew Ng 在 Coursea 上的机器学习课程所做的笔记。 什么是机器学习 对于机器学习,并没有一个一致认同的定义…

mysql执行过程五步_简单五步教你搭建MySQL主从复制

环境主机:172.17.0.2从机:172.17.0.3环境:CentOS7MySQL:5.6.38目标:实现主机172.17.0.2到从机172.17.0.3基于Binlog的主从复制目前MySQL提供两种方式主从复制:基于Binlog(我们此篇就是基于Binlog的主从复制…

[机器学习笔记] Note2--单变量线性回归

继续是机器学习课程的笔记,这节介绍的是单变量线性回归算法,线性回归算法也是一个比较基础的算法。 模型表达 首先是以房屋交易问题为例,假设我们回归问题的训练集如下表所示: Size in feet2feet2(x)Price($) in 1000’s (y)21…

linux打印mysql堆栈_第25问:MySQL 崩溃了,打印了一些堆栈信息,怎么读?

问题在 09 问中,我们开启了 coredump 功能,在 MySQL 崩溃时获得了有用的 coredump 信息。那如果没开启 coredump,仅有 error log 中的堆栈信息,我们如何分析有效的信息?实验我们沿用 09 问中的 MySQL 崩溃的场景&#…

[机器学习笔记] Note3--多变量线性回归

继续是机器学习课程的笔记,这节课介绍的是多变量的线性回归。 多变量线性回归 多维特征 上节课介绍的是单变量的线性回归,这节课则是进一步介绍多变量的线性回归方法。 现在假设在房屋问题中增加更多的特征,例如房间数,楼层等…

mysql主键long_MySQL主键设计

[TOC]在项目过程中遇到一个看似极为基础的问题,但是在深入思考后还是引出了不少问题,觉得有必要把这一学习过程进行记录。MySQL主键设计原则MySQL主键应当是对用户没有意义的。MySQL主键应该是单列的,以便提高连接和筛选操作的效率永远也不要…

[机器学习笔记] Note4--逻辑回归

继续是机器学习课程的笔记,这节课会介绍逻辑回归。 分类问题 这节课会介绍的是分类问题,其结果是离散值。分类问题的例子有判断电子邮件是否是垃圾邮件;判断肿瘤是良性还是恶性;判断一次金融交易是否是欺诈等等。 首先从二元的…

java容器集合类的区别用法_Java容器笔记(二):不同集合实现类的特点与区别...

package java.util包中的Collection相关接口和类如下图:Collection.png仅讨论Java.util包中的常见集合类,不涉及java.util的子包concurrent中的并发集合类。可以这样简单的来对待容器中集合:Collection_common.png1、 List、Set、Queue三个接…

[机器学习笔记]Note5--归一化

继续是机器学习课程的笔记,这节课会介绍归一化的内容。 过拟合问题 这节课会介绍一个在机器学习过程中经常会遇到的问题–过拟合。通常,当我们有非常多的特征,我们可以学习得到的假设可能非常好地适应训练集,即代价函数可能几乎…

combobox的联动练习

老师的项目中,网站右上有四个联动的combobox,今天第一次尝试解决。外观如图: 首先第一次登陆系统时,需要分别载入4个框中的数据。通过easyui-combobox的url 属性请求php返回json数据即可,json中的value是名称&#xff…