ASP.NET事件处理程序基本问题

时间:2010-04-13 19:11:26

标签: asp.net

我很困惑,想确认以下声明 -

我们可以为同一个事件创建多个事件句柄方法吗?

我想是的,因为它是超载概念?正确?

请纠正我的理解或建议。

感谢。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

例如,在笔记本电脑上,Windows可能会发布一个电池电量不足的事件,应用程序可以自行连接,以便调整性能以节省能源。