eventhandler,EventHandler是什么
大家好,关于eventhandler很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于EventHandler是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
EventHandler是什么
表示将处理不包含事件数据的事件的方法。
命名空间:System
程序集:mscorlib(在 mscorlib.dll中)
C#
[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate void EventHandler(
Object sender,
EventArgs e
)
参数
sender
事件源。
e
不包含任何事件数据的 EventArgs。
.NET Framework中的事件模型基于具有事件委托,该委托将事件与事件处理程序连接。引发事件需要两个元素:
标识对事件提供响应的方法的委托。
保存事件数据的类。
委托是一个定义签名的类型,即方法的返回值类型和参数列表类型。可以使用委托类型来声明一个变量,该变量可以引用与委托签名相同的所有方法。
事件处理程序委托的标准签名定义一个没有返回值的方法,其第一个参数的类型为 Object,它引用引发事件的实例,第二个参数从 EventArgs类型派生,它保存事件数据。如果事件不生成事件数据,则第二个参数只是 EventArgs的一个实例。否则,第二个参数为从 EventArgs派生的自定义类型,提供保存事件数据所需的全部字段或属性。
EventHandler是一个预定义的委托,专用于表示不生成数据的事件的事件处理程序方法。如果事件生成数据,则必须提供自己的自定义事件数据类型,并且必须要么创建一个委托,其中第二个参数的类型为自定义类型,要么使用泛型 EventHandler委托类并用自定义类型替代泛型类型参数。
若要将事件与处理事件的方法关联,请向事件添加委托的实例。除非移除了该委托,否则每当发生该事件时就调用事件处理程序。
有关事件处理程序委托的更多信息,请参见事件和委托。
下面的代码示例演示不使用事件数据的事件处理程序委托的声明。EventHandler类是事件委托的类型,sender是引发事件的对象,而 e则是不包含任何数据的事件数据对象。示例的第二行代码为类中没有数据的事件定义事件成员。
public delegate void EventHandler(Object sender, EventArgs e);
public event EventHandler NoDataEventHandler;
C#程序EventHandler不理解
EventHandler即事件委托,表示用于处理不具有事件数据的事件的方法。
字面上理解就是一个事件处理器,将一个事件与处理事件的方法联系起来的一种机制。
C++中通过函数指针来完成的。
在C#中的事件基于委托模型。委托模型遵守观察者设计模式,使订阅者(接收或处理事件的类)能够向提供方(发送或引发事件的类)注册并接收相关通知。
步骤:
首先声明一个委托,一般命名为:NameEventHandler
//这些委托没有返回类型值,并且接受两个参数(事件源的对象和事件数据的对象)。
public delegate void ThresholdReachedEventHandler(object sender, ThresholdReachedEventArgs e);
然后声明一个事件,并指定事件的委托类型
// event关键字代表事件,返回类型为委托;
public event EventHandler事件名;
同时,创建引发事件的方法,一般命名为:OnEventName。
//通常为了引发事件,会添加一个标记为protected和virtual的方法,以允许派生类重写引发事件的逻辑。
protected virtual void OnThresholdReached(EventArgs e)
{
EventHandler handler= ThresholdReached;
if(handler!= null)
{
handler(this, e);
}
}
再定义一个事件处理程序方法,处理事件。
static void c_ThresholdReached(object sender, EventArgs e)
{
Console.WriteLine("The threshold was reached.");
}
最后使用加法赋值运算符(+=)来为事件附加事件处理程序。+=表示添加事件,-=表示删除事件。
// Counter类中需要拥有一个名为ThresholdReached的事件
Counter c= new Counter();
c.ThresholdReached+= c_ThresholdReached;
//以下是老的C#1.0的语法
// c.ThresholdReached+= new ThresholdReachedEventHandler(c_ThresholdReached);
以下是C# EventHandler委托的一个类比解释
例子:
this.Activated+= new EventHandler(Form1_Activated);
这是一个委托的原理.
this.Activated=你吃完饭;
Form1_Activated=喊我一声
意思就是把这两个事放在一起,意思就是叫你吃完饭了喊我一声。我委托你吃完饭了,喊我一声。这样我就不用过一会就来看一下你吃完了没有了,已经委托你了。
扩展资料:语法
Visual Basic(声明)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Delegate Sub EventHandler( _
sender As Object, _
e As EventArgs _
)
Visual Basic(用法)
Dim instance As New EventHandler(AddressOf HandlerMethod)
C#
[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate void EventHandler(
Object sender,
EventArgs e
)
C++
[SerializableAttribute]
[ComVisibleAttribute(true)]
public delegate void EventHandler(
Object^ sender,
EventArgs^ e
)
参考资料:
百度百科——EventHandler
c#Event事件
1:这是自己声明的一个事件,就是自定义事件。后面跟个委托,是为了事件发生时调用与委托相符的函数。OnInventoryChangeHandler这个就是方法的名字。
2:这个指出事件在什么时候发生。当UpdateInventory函数调用时,就发生刚才的事件。就像一个窗体,你关闭时调用close()方法,closing事件就会发生。
OnInventoryChangeHandler(this, e);这是指出方法发生时的参数,
3:这个是注册事件,就相当于告诉当前类,这个事件发生时,当用哪个方法。
2和3,一个是哪个函数触发事件,一个是事件调用哪个函数。
C#中eventhandler及eventargs
Button.Click事件C#定义方式:
public event EventHandler Click;
Click事件是EventHandler类型的。
button.CLick事件只能接受EventHandler类型的委托,你给他一个自定义的ev1类型的委托运行时候格式不匹配会隐式转换,转化不了就异常了。
在老C#中EventHandler指的是一个需要定义一个delegate,这个delegate是回调的规范。例如:
public delegate void CustomEventHandler(object sender, CustomEventArgs a);
在新C#中,内置了一个EventHandler<T>范型。
event是一个关键字,用event关键字可以定义一个event对象。
public event CustomEventHandler RaiseCustomEvent;
在新C#下,可以像下面这么写:
public event EventHandler<CustomEventArgs> RaiseCustomEvent;
最后,参数要从EventArgs类继承。
关于eventhandler和EventHandler是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。