使用user control的好處自不必說
但是作為一個控件
雖然實際上其中可能包含很多控件(服務端控件)
但是一旦在頁面中注冊使用
它就表現為一個獨立的控件
也就是說在編輯階段
其包含的控件我們是訪問不到的
或者說不能對其包含的控件進行控制
這個時候
就要通過為控件添加屬性和事件來提供對外的接口
使得我們可以間接的控制其
子控件
用屬性來控制其子控件的狀態
而我們可以在外部訪問並改變屬性值
從而達到間接控制子控件的目的
當然如果子控件發生了什麼事件
我們要想知道
就可以通過public event來獲得
此Demo演示了
user control中datalist發生了selectedindex事件
而我們在page中想利用這個事件
那麼就可以這樣做
usercontrol: uc
ascx

<%@ Control Language=
C#
AutoEventWireup=
true
CodeFile=
uc
ascx
cs
Inherits=
uc
%>

<asp:DataList ID=
dlshow
runat=
server
RepeatDirection =
Horizontal
OnSelectedIndexChanged=
dlshow_SelectedIndexChanged
>

<ItemTemplate >

<asp:LinkButton ID=
linkbtn
runat=
server
CommandName=
Select

Text=
<%#Container
DataItem %>
>

</asp:LinkButton>

</ItemTemplate>

</asp:DataList>CS:

using System
Collections
Generic;


public partial class uc
: System
Web
UI
UserControl

{

public event EventHandler TabClick;


private int index;


public int Index

{

get { return index; }

set { index = value; }

}


protected void Page_Load(object sender
EventArgs e)

{

List<string> list = new List<string>();

list
Add(
tab
);

list
Add(
tab
);

list
Add(
tab
);

list
Add(
tab
);


dlshow
DataSource = list;

dlshow
DataBind();


dlshow
SelectedIndex =
;

}

protected void dlshow_SelectedIndexChanged(object sender
EventArgs e)

{

Label lbl=this
Parent
FindControl(
lblshow
) as Label;

lbl
Text =
Access Parent Page Control
;


index = dlshow
SelectedIndex;


TabClick(this
null);

}


}page:showuc
aspx:

<%@ Page Language=
C#
AutoEventWireup=
true
CodeFile=
ShowUc
aspx
cs
Inherits=
ShowUc
%>

<%@ Register TagPrefix =
my
TagName =
tab
Src =
~/uc
ascx
%>

<!DOCTYPE html PUBLIC
//W
C//DTD XHTML
Transitional//EN
transitional
dtd
>


<html xmlns=
>

<head runat=
server
>

<title>未命名頁面</title>

</head>

<body>

<form id=
form
runat=
server
>

<div>

<my:tab ID=
Mytab
runat=
server
OnTabClick=
Mytab_TabClick
/>

<br />

<asp:Label ID=
lblshow
runat=
server
Text=
Label
></asp:Label>

</div>

</form>

</body>

</html>

CS:

public partial class ShowUc : System
Web
UI
Page

{

protected void Page_Load(object sender
EventArgs e)

{

}


protected void Mytab_TabClick(object sender
EventArgs e)

{

int index = Mytab
Index;


Response
Write(
You selected the index
+index);

}

}
From:http://tw.wingwit.com/Article/program/net/201311/12455.html