2010-04-13 37 views
0

我很困惑,想确认下面的语句 -ASP.NET事件处理程序的基本问题

我们可以对同一个事件创建多个事件处理方法?

我认为是的,因为它是超载概念?对?

请纠正我的理解或建议。

谢谢。

回答

2

您可以根据需要订阅具有尽可能多的事件处理程序的事件。例如,

Button.Click += OnClick; 
Button.Click += OnClick2;  
Button.Click += new EventHandler(OnClick3); // C# 1 syntax 

public void OnClick(object sender, EventArgs e) 
{ 
    // do something 
} 

public void OnClick2(object sender, EventArgs e) 
{ 
    // do something 2! 
} 

public void OnClick3(object sender, EventArgs e) 
{ 
    // do something 3! 
} 

这不是方法重载但使用.NET事件模型,所述Observer pattern的实现。请参阅MSDN article - Handling and Raising events了解更多详情。

0

这不是重载。重载使用diff参数类型提供相同的方法名称,并计数,因为它有助于记忆函数名称。 但订阅一个事件不会超载,因为你不能有diff参数类型,否则你的事件处理程序不会有资格注册。并且这个注册是使用像arraylist这样的一些数据结构完成的(例如,保存注册事件处理程序的列表)。

0

这就是事件的要点 - 一个对象发布它可能引发特定类型事件的事实,并且订阅者将自己锁定到该事件。

当发布者触发事件时,将通知所有订阅者并调用其指定的方法。

例如,在笔记本电脑上,Windows可能会发布电池低电量事件,哪些应用程序可以自己挂钩以便他们调整性能以节约能源。