相对于 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 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 Object, ByVal 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 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 _Default
2
Inherits System.Web.UI.Page
3
4
Protected 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