- EventHandler: 能提供一个对于所有事件和事件处理器都通用的签名,只允许两个参数,(而不是各自都有不同签名)
- Object sender , //用来保存除非时间的对象引用,由于为object类型的,所以可以匹配任何类型的参数
- EventArgs e , //用来保存状态信息,(或用户传递数据,需继承该类)
namespace System
{
// Summary:
// Represents the method that will handle an event.
//
// Parameters:
// sender:
// The source of the event.
//
// e:
// An System.EventArgs that contains the event data.
//
// Type parameters:
// TEventArgs:
// The type of the event data generated by the event.
[Serializable]
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e); //注意这个是模板
}
? ?
?
- EventArgs
namespace System
{
// Summary:
// System.EventArgs is the base class for classes containing event data.
[Serializable]
[ComVisible(true)]
public class EventArgs
{
// Summary:
// Represents an event with no event data.
public static readonly EventArgs Empty;
? ?
?// Summary:
// Initializes a new instance of the System.EventArgs class.
public EventArgs();
}
}
- 扩展EventArgs来传递数据
? ?
?/////////////////////////////////////////////////////////////////
- 示例:
public class IncrementerEventArgs : EventArgs // Custom class derived from EventArgs
{
public int IterationCount { get; set; } // Stores an integer
}
? ?
?class Incrementer
{
public event EventHandler<IncrementerEventArgs> CountedADozen;
? ?
?public void DoCount()
{
IncrementerEventArgs args = new IncrementerEventArgs();
for ( int i=1; i < 100; i++ )
if ( i % 12 == 0 && CountedADozen != null )
{
args.IterationCount = i;
CountedADozen( this, args );
}
}
}
? ?
?class Dozens
{
public int DozensCount { get; private set; }
? ?
?public Dozens( Incrementer incrementer )
{
DozensCount = 0;
incrementer.CountedADozen += IncrementDozensCount;
}
? ?
?void IncrementDozensCount( object source, IncrementerEventArgs e )
{
Console.WriteLine( "Incremented at iteration: {0} in {1}",
e.IterationCount, source.ToString() );
DozensCount++;
}
}
? ?
?class Program
{
static void Main()
{
Incrementer incrementer = new Incrementer();
Dozens dozensCounter = new Dozens( incrementer );
? ?
?incrementer.DoCount();
Console.WriteLine( "Number of dozens = {0}",
dozensCounter.DozensCount );
}
}
- ?
事件2 (标准 EventHandler)
时间: 2024-10-13 22:52:44
事件2 (标准 EventHandler)的相关文章
事件的标准模式
摘自http://www.cnblogs.com/willick/p/4172174.html,仅供参考学习 .NET框架为事件编程定义了一个标准模式,设定这个标准是为了让.NET框架和用户代码保持一致.System.EventArgs是标准模式的核心,它是一个没有任何成员,用于传递事件参数的基类,首先定义EventArgs: 1 public class PriceChangeEventArgs : System.EventArgs { 2 public readonly decimal ol
委托、Lambda表达式、事件系列07,使用EventHandler委托
谈到事件注册,EventHandler是最常用的. EventHandler是一个委托,接收2个形参.sender是指事件的发起者,e代表事件参数. □ 使用EventHandler实现猜拳游戏 使用EventHandler实现一个猜拳游戏,每次出拳,出剪刀.石头.布这三者的其中一种. 首先抽象出一个被观察者,其中提供了事件,提供了执行事件的方法. public class FistGame { public string FistName { get; set; } public event
事件委托 EventHandler
事件就是当对象或类状态发生改变时,对象或类发出的信息或通知.发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装 事件的声明 1.声明一个委托public delegate void EventHandler(object sender, System.
Android RecyclerView单击、长按事件标准实现:基于OnItemTouchListener + GestureDetector
?? Android RecyclerView单击.长按事件:基于OnItemTouchListener + GestureDetector标准实现 Android RecyclerView虽然拥有ListView绝大多数的功能,但Android RecyclerView却没有实现像ListView那样的点击事件.长按事件的标准实现方式,我在附录文章1中介绍的方式,实现了典型的RecyclerView的item点击事件,大致的思路是通过为RecyclerView的ViewHolder添加View
C#高级知识点概要(1) - 委托和事件
作者:linybo 要成为大牛,必然要有扎实的基本功,不然时间再长项目再多也很难有大的提升.本系列讲的C# 高级知识点,是非常值得去撑握的,不仅可以让你写代码时游刃有余,而且去研究和学习一些开源项目时,也不会显得那么吃力了. 希望大家记住,这里讲的所有的知识点,不仅仅是了解了就可以了,还要会灵活用,一定要多思考,撑握其中的编程思想. 本文讲的是委托和事件,这两个词可能你早就耳熟能详,但你是否真正撑握了呢? 本系列讲的C#高级知识点都是要求开发时能达到可以徒手写出来的水平(不依赖搜索引擎.找笔记等
C#学习(一):委托和事件
预备知识 在学习委托和事件之前,我们需要知道的是,很多程序都有一个共同的需求,即当一个特定的程序事件发生时,程序的其他部分可以得到该事件已经发生的通知. 而发布者/订阅者模式可以满足这种需求.简单来说,在这种模式中,发布者定义了一系列程序的其他部分可能感兴趣的事件.其他类可以"注册",以便再这些事件发生时发布者可以通知它们.这些订阅者类通过向发布者提供一个方法来"注册"以获取通知.当事件发生时,发布者"触发事件",然后执行订阅者提交的所有事件.
MSDN搬运 之 [事件]
在发生其他类或对象关注的事情时,类或对象可通过事件通知它们.发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”. 在典型的 C# Windows 窗体或 Web 应用程序中,可订阅由控件(如按钮和列表框)引发的事件.可使用 Visual C# 集成开发环境 (IDE) 来浏览控件发布的事件,选择要处理的事件.IDE 会自动添加空事件处理程序方法和订阅事件的代码.有关更多信息,请参见如何:订阅和取消订阅事件(C# 编程指南). 事件概述 事件具有以下特点: 发行者确定何时引发
.NET基础拾遗(4)委托、事件、反射与特性
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 一.委托基础 1.1 简述委托的基本原理 委托这个概念对C++程序员来说并不陌生,因为它和C++中的函数指针非常类似,很多码农也喜欢称委托为安全的函数指针.无论这一说法是否正确,委托的的确确实现了和函数指针类似的功能,那就是提供了程序回调指定方法的机制. 在委托内部,包含了一个指向某个方法的指针(这一点上委托实现机制和C++的函数指针一致),为何称其
[ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - 委托和事件
在ASP.NET MVC 小牛之路系列中,前面用了一篇文章提了一下C#的一些知识点.照此,ASP.NET MVC 大牛之路系列也先给大家普及一下C#.NET中的高级知识点.每个知识点不太会过于详细,但足矣.要深入研究还需要去查看更多的专业资料. 要成为大牛,必然要有扎实的基本功,不然时间再长项目再多也很难有大的提升.本系列讲的C# 高级知识点,是非常值得去撑握的,不仅可以让你写代码时游刃有余,而且去研究和学习一些开源项目时,也不会显得那么吃力了. 希望大家记住,这里讲的所有的知识点,不仅仅是了解