C#如何使用事件属性处理多个事件

 我来答
百宜羿沛若
2019-09-30 · TA获得超过3615个赞
知道大有可为答主
回答量:3015
采纳率:27%
帮助的人:188万
展开全部
要使用事件属性(Visual
Basic
2005
中的自定义事件),请在引发事件的类中定义事件属性,然后在处理事件的类中设置事件属性的委托。要在一个类中实现多个事件属性,该类必须在内部存储和维护为每个事件定义的委托。一种典型方法是实现通过事件键进行索引的委托集合。
要存储每个事件的委托,可以使用
EventHandlerList
类或实现您自己的集合。集合类必须提供用于基于事件键设置、访问和检索事件处理程序委托的方法。例如,可以使用Hashtable类或从DictionaryBase
类派生一个自定义类。不需要在类以外公开委托集合的实现详细信息。
类中的每个事件属性定义一个
add
访问器方法和一个
remove
访问器方法。事件属性的
add
访问器将输入委托实例添加到委托集合。事件属性的
remove
访问器从委托集合中移除输入委托实例。事件属性访问器使用事件属性的预定义键在委托集合中添加和从委托集合中移除实例。
使用事件属性处理多个事件
在引发事件的类中定义一个委托集合。
定义每个事件的键。
在引发事件的类中定义事件属性。
使用委托集合实现事件属性的
add
访问器方法和
remove
访问器方法。
使用公共事件属性可在处理事件的类中添加和移除事件处理程序委托。
示例下面的
C#
示例实现事件属性MouseDown和MouseUp
,并使用EventHandlerList
存储每个事件的委托。事件属性构造的关键字用粗体表示。
注意Visual
Basic
2005
中不支持事件属性。//The
class
SampleControl
defines
two
event
properties,
MouseUp
and
MouseDown.
classSampleControl:
Component
{//://Define
other
control
methods
and
properties.//://Define
the
delegate
collection.
protectedEventHandlerList
listEventDelegates=newEventHandlerList();//Define
a
unique
key
for
each
event.
staticreadonlyobjectmouseDownEventKey=newobject();staticreadonlyobjectmouseUpEventKey=newobject();//Define
the
MouseDown
event
property.
publiceventMouseEventHandler
MouseDown
{//Add
the
input
delegate
to
the
collection.
add
{
listEventDelegates.AddHandler(mouseDownEventKey,
value);
}//Remove
the
input
delegate
from
the
collection.
remove
{
listEventDelegates.RemoveHandler(mouseDownEventKey,
value);
}}//Define
the
MouseUp
event
property.
publiceventMouseEventHandler
MouseUp
{//Add
the
input
delegate
to
the
collection.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式