C#程序EventHandler不理解

C#程序EventHandler不理解,第1张

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()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12308139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存