相对于 ServerControl 来说,UserControl 是相当容易上手的,利用拖曳现有控件就可以组合成复杂的控件。
一般 UserControl 的撰写方式跟页面差不多,不过 UserControl 有时需要提供一些事件,让使用这个 UserControl 的页面可以在此事件中撰写相关的程序代码,以下我们就会示范如果撰写 UserControl 的事件。
首先撰写一个 Toolbar 的 UserControl,Toolbar 上具有「首笔」、「上笔」、「下笔」、「末笔」四个按钮,当按下按钮时会引发 Click 事件,并可由事件自变量的 e.CommandName 得知那个按钮引发此事件。
Toolbar.ascx 的程序代码及画面如下

Toolbar.ascx.vb 的程序代码如下
在 Toolbar.ascx.vb中定义了 Click 事件,Click 事件自变量为 ClickEventArgs,ClickEventArgs 具有 CommandName 属性,用来识别按钮命令。当 Toolbar 按下按钮时,会进 Button_Click 事件处理函式,在此函式中取得作用按钮的 CommandName,并引发 Toolbar 的 Click 事件。
接下来就是检验成果的时候,将 Toolbar UserControl 拖曳至页面上,切换至页面的程序代码 (*.aspx.vb),在控件清单中选取 Toolbar,在右方的事件清单中,就可以看到在 Toolbar 定义的 Click 事件了。

在 Toolbar UserControl 的 Click 事件中,撰写如下程序代码,当按下按钮时就会输出对应的 CommandName。
一般 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="末筆" />
2
3
4
5
Toolbar.ascx.vb 的程序代码如下
1
Partial Class ToolbarClass Toolbar
2
Inherits System.Web.UI.UserControl
3
4
/**/''' <summary>
5
''' Toolbar 控制項的 Click 事件引數。
6
''' </summary>
7
Public Class ClickEventArgsClass ClickEventArgs
8
Inherits System.EventArgs
9
Dim FCommandName As String = String.Empty
10
11
/**/''' <summary>
12
''' 按鈕命令。
13
''' </summary>
14
Public Property CommandName()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 Object, ByVal e As ClickEventArgs)
28
29
/**/''' <summary>
30
''' 引發 Click 事件。
31
''' </summary>
32
Public Overloads Sub RaiseClickEvent()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()Sub Button_Click(ByVal sender As Object, ByVal 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
49
End Class
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
在 Toolbar.ascx.vb中定义了 Click 事件,Click 事件自变量为 ClickEventArgs,ClickEventArgs 具有 CommandName 属性,用来识别按钮命令。当 Toolbar 按下按钮时,会进 Button_Click 事件处理函式,在此函式中取得作用按钮的 CommandName,并引发 Toolbar 的 Click 事件。
接下来就是检验成果的时候,将 Toolbar UserControl 拖曳至页面上,切换至页面的程序代码 (*.aspx.vb),在控件清单中选取 Toolbar,在右方的事件清单中,就可以看到在 Toolbar 定义的 Click 事件了。
在 Toolbar UserControl 的 Click 事件中,撰写如下程序代码,当按下按钮时就会输出对应的 CommandName。
1
Partial Class _DefaultClass _Default
2
Inherits System.Web.UI.Page
3
4
Protected Sub Toolbar1_Click()Sub Toolbar1_Click(ByVal sender As Object, ByVal e As Toolbar.ClickEventArgs) Handles Toolbar1.Click
5
Me.Response.Write(e.CommandName)
6
End Sub
7
End Class
2
3
4
5
6
7
程序代码下载:UserControlEvent.rar
转载于:https://www.cnblogs.com/jeff377/archive/2008/01/19/1045056.html