您的位置:首页 > 其它

服务器控件开发 - 事件机制(3)

2008-07-04 16:27 176 查看
上一篇的基础上, 我们来看看如何为我们的服务器控件添加事件支持。 丰富的事件支持能让控件的使用者最大限度的参与控件的生命周期,最大限度得提高控件的重用性。

每一个服务器控件都从Control基类继承了 OnInit, OnLoad, OnPreRender, and OnUnLoad 等 4 个事件. 在页面开发中, 开发人员可以通过2种方式来注册ASP.NET事件.

1. 通过声明的方式

<asp:Button id="button1" OnClick="button1_Click" Text="Submit" runat="server" />

2. 通过编程的方式

button1.Click += new EventHandler(this.button1_Click);

另外一点需要注意的是, 在Asp.net 2.0 里面. 页面模型自动将Page_Init, Page_Load, Page_PreRender, and Page_Unload 4 个方法绑定到页面对应的事件.

而不需要显式的声明. 这个特性是通过在页面声明中加入 AutoEventWireup="true" 来实现的. 如果发现页面不触发Page_Load 事件. 一个可能的原因就是

AutoEventWireup 的值被设为 False.

在C# 中 定义一个典型的事件代码如下:

public delegate void ClickEventHanlder(object sender, EventArgs e);

public event ClickEventHanlder OnClickEvent = null;

public void RaiseEvent()

Code

protected virtual void OnInit(EventArgs e) {

EventHandler initHandler = (EventHandler)Events[EventInit];

if (initHandler != null) {

initHandler(this, e);

}

}

最后 在页面的特定阶段触发事件, OnInit 事件的触发可以参考我第一篇当中的 InitRecursive方法

通过以上方式就可以任意的为我们的自定义控件添加事件。 而不需要去考虑任何的性能问题。

下一篇 : 服务器控件的 PostBack 机制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: