撰写 UserControl 的事件

相对于 ServerControl 来说,UserControl 是相当容易上手的,利用拖曳现有控件就可以组合成复杂的控件。
一般 UserControl 的撰写方式跟页面差不多,不过 UserControl 有时需要提供一些事件,让使用这个 UserControl 的页面可以在此事件中撰写相关的程序代码,以下我们就会示范如果撰写 UserControl 的事件。

首先撰写一个 Toolbar 的 UserControl,Toolbar 上具有「首笔」、「上笔」、「下笔」、「末笔」四个按钮,当按下按钮时会引发 Click 事件,并可由事件自变量的 e.CommandName 得知那个按钮引发此事件。

Toolbar.ascx 的程序代码及画面如下
1 <% @ Control Language="VB" AutoEventWireup="false" CodeFile="Toolbar.ascx.vb" Inherits="Toolbar"  %>
2 < asp:Button  ID ="btnMoveFirst"  runat ="server"  CommandName ="MoveFirst"  Text ="首筆"   />
3 < asp:Button  ID ="btnMovePrevious"  runat ="server"  CommandName ="MovePrevious"  Text ="上筆"   />
4 < asp:Button  ID ="btnMoveNext"  runat ="server"  CommandName ="MoveNext"  Text ="下筆"   />
5 < asp:Button  ID ="btnMoveLast"  runat ="server"  CommandName ="MoveLast"  Text ="末筆"   />



Toolbar.ascx.vb 的程序代码如下
 1 Partial   Class Toolbar
 2    Inherits System.Web.UI.UserControl
 3
 4    ''' <summary>
 5    ''' Toolbar 控制項的 Click 事件引數。
 6    ''' </summary>

 7    Public Class ClickEventArgs
 8        Inherits System.EventArgs
 9        Dim FCommandName As String = String.Empty
10
11        ''' <summary>
12        ''' 按鈕命令。
13        ''' </summary>

14        Public Property CommandName() As String
15            Get
16                Return FCommandName
17            End Get
18            Set(ByVal value As String)
19                FCommandName = value
20            End Set
21        End Property

22    End Class

23
24    ''' <summary>
25    ''' 按下工具列按鈕引發的事件。
26    ''' </summary>

27    Public Event Click(ByVal sender As ObjectByVal e As ClickEventArgs)
28
29    ''' <summary>
30    ''' 引發 Click 事件。
31    ''' </summary>

32    Public Overloads Sub RaiseClickEvent(ByVal e As ClickEventArgs)
33        RaiseEvent Click(Me, e)
34    End Sub

35
36    ''' <summary>
37    ''' 所有按鈕的事件處理函式。
38    ''' </summary>

39    Protected Sub Button_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles _
40        btnMoveFirst.Click, btnMovePrevious.Click, btnMoveNext.Click, btnMoveLast.Click
41        Dim oEventArgs As New ClickEventArgs()
42
43        '取得作用按鈕的 CommandName
44        oEventArgs.CommandName = CType(sender, Button).CommandName
45        '引發 Click 事件
46        RaiseClickEvent(oEventArgs)
47    End Sub

48
49End Class


在 Toolbar.ascx.vb中定义了 Click 事件,Click 事件自变量为 ClickEventArgs,ClickEventArgs 具有 CommandName 属性,用来识别按钮命令。当 Toolbar 按下按钮时,会进 Button_Click 事件处理函式,在此函式中取得作用按钮的 CommandName,并引发 Toolbar 的 Click 事件。

接下来就是检验成果的时候,将 Toolbar UserControl 拖曳至页面上,切换至页面的程序代码 (*.aspx.vb),在控件清单中选取 Toolbar,在右方的事件清单中,就可以看到在 Toolbar 定义的 Click 事件了。

撰写 UserControl 的事件_第1张图片

在 Toolbar UserControl 的 Click 事件中,撰写如下程序代码,当按下按钮时就会输出对应的 CommandName。

1 Partial   Class _Default
2    Inherits System.Web.UI.Page
3
4    Protected Sub Toolbar1_Click(ByVal sender As ObjectByVal e As Toolbar.ClickEventArgs) Handles Toolbar1.Click
5        Me.Response.Write(e.CommandName)
6    End Sub

7End Class

程序代码下载UserControlEvent.rar

你可能感兴趣的:(user)