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
最佳回答:焦点将切换到 Visual Studio 2008 代码编辑器中 Clicked 事件的氏吵厅框架事件处理程序。Microsoft Visual Studio(简称VS)是美国微软碰厅公司的歼隐...int main(){
system_init()
if(v_too_low())
{
alarm():
}
if(card_in())
{
card()
}
if(some_message())
{
pulse_process()
LCD()
if(sum() == 0)
{
close_door()
}
else
{
if(sum_less())
{
wait()
}
else
{
alarm()
}
wait()
}
}
wait()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)