用戶控件:WebUserControl 添加新項-用戶控件 .ascx后綴,
派生.UserControl與頁面的父類不是一個 是要嵌在頁面里面使用
使用方法:直接設計頁面拖到要放置的位置,出現以下兩項
<%@ Register src="WUC.ascx" tagname="WUC" tagprefix="uc1" %>
<uc1:WUC ID="WUC1" runat="server" />
路徑 4個
1:控件路徑,image,超鏈接,指向頁面
第一步:在WUC.ascx頁面上:
<img src="Image/暴風截圖2015102133868160.jpg" runat="server"id="id1"/><%--變成服務器控件--%>
在控件里加兩項內容;runat="server" id="id1";將控件變成變成服務器控件,用戶控件下這兩項內容缺一不可,
防止不是在同一級文件夾下找不到文件,服務器自動轉換路徑
2:樣式表中用戶控件路徑 利用外部樣式表,不要寫內聯的樣式表
第一步:添加新項-樣式表
將用的頁面添加到head里面
樣式表頁面CSS.css
#aa {
background-image:url(../Image/暴風截圖2015102133868160.jpg) ;// ../
height:100px;
width:100px
}
第二步:在WUC.ascx頁面上:
< div id="aa" ></div>
3:外部資源路徑 外部的js文件 ,需要調用函數來處理路徑
第一步;添加新項-JavaScript文件
JavaScript.js頁面:
alert("你好");
第二步: WUC.ascx.cs:寫函數
public string ShowPath()
{
string path = "Script/JavaScript.js";
path = ResolveClientUrl(path);//獲取客戶端瀏覽器可以使用的路徑url
return path;
}
第三步: WUC.ascx頁面上:直接拖過控件
<script src="<%=ShowPath()%>"></script>
4:頁面路徑:用戶控件按鈕點擊跳轉頁面
用戶控件按鈕點擊時跳轉頁面:將相對路徑轉換為絕對路徑
~ 在服務器上表示網站的根目錄
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/main.aspx");
}
二:傳值
AAAA1:頁面向用戶控件傳值
a;findcontrol 傳值
.aspx按鈕中
//1.取頁面控件按鈕的值
string s = TextBox1.Text;
//2去用戶控件找文本框
TextBox text = WUC1.FindControl("TextBox1") as TextBox;
//3.將頁面文本值賦值給用戶控件的文本框
text.Text = s;
b:屬性傳值
第一步:用戶控件里面寫一個屬性;
public string Txt
{
get
{
return TextBox1.Text;
}
set
{
TextBox1.Text=value;
}
}
第二步:在頁面按鈕里寫
protected void Button1_Click(object sender, EventArgs e)
{
//WUC1.Txt = TextBox1.Text;//用頁面上取值給用戶控件
TextBox1.Text = WUC1.Txt;//從用戶控件里面取給頁面
}
第三步:頁面控件按鈕點擊時:
protected void Button1_Click(object sender, EventArgs e)
{
// 找到用戶控件的屬性
WUC1.Txt = TextBox1.Text;
}
BBBB2:用戶控件向頁面傳值:
a:用session傳值:
第一步:在用戶控件:
protected void Button1_Click(object sender, EventArgs e)
{
Session["txt"] = TextBox1.Text;
}
第二步:在頁面上重寫onloadcomplete()事件:在子類中對父類的方法的重寫,
防止數據延遲 override onloadcomplete()
// 在頁面加載完成后對頁面家安在完成后對父類方法的重寫
protected override void OnLoadComplete(EventArgs e)
{
base.OnLoadComplete(e);
if (Session["txt"] != null)
{
TextBox1.Text = Session["txt"].ToString();
}
}
建議用 b:委托或代理;指向方法的引用,引用指向方法,,好用但是難理解;只改變指向的方法即可 delegete
Dog d=New Dog();d引用指向的是Dog類的對象
string s="ssss";s指向的是字符串
public void Show(Dog);引用指向方法,指向方法的引用
1:定義一個類
class Dog
{
public int Dog;
public void walk();
}
2:聲明一個dog對象
Dog d;
3:將該引用指向Dog
d=New Dog();
4:用該引用調對象的方法
代理:指向方法的引用 和事件很像
簽名:返回類型 void,參數列表string s;
y 1:定義一個代理 //用戶控件里面
//加上delegate后,ShowDelegate不是原來的函數名而是代理類型名
public delegate void ShowDelegate(string s);
2:聲明一個代理的引用 //用戶控件里面
// 前面加上public后在其他類里面可以用
public ShowDelegate show;
3:在具體頁面上頁面加載時3;將代理的引用指向簽名匹配的(函數)方法; 可以和手動掛事件一樣 ,
+= 可以掛很多事件,事件本質就是一個特殊的代理。可以指向很多方法只要簽名一致就可以,
show=new ShowDelegate(DO);
protected void Page_Load(object sender, EventArgs e)
{
//3.將該引用指向簽名匹配的函數(方法)
//WUC1.Show = new WUC.ShowDelegate(ShowText);
WUC1.Show += ShowText;
}
4:用代理調用方法 在用戶控件button里面
show("aa");
protected void Button1_Click(object sender, EventArgs e)
{
//.調用Show方法
string s = TextBox1.Text;
Show(s);
}
5:在實際頁面寫函數。簽名必須和代理類型的一樣
public void Do(string s)
{
TextBox1.Text=A;
}
派生.UserControl與頁面的父類不是一個 是要嵌在頁面里面使用
使用方法:直接設計頁面拖到要放置的位置,出現以下兩項
<%@ Register src="WUC.ascx" tagname="WUC" tagprefix="uc1" %>
<uc1:WUC ID="WUC1" runat="server" />
路徑 4個
1:控件路徑,image,超鏈接,指向頁面
第一步:在WUC.ascx頁面上:
<img src="Image/暴風截圖2015102133868160.jpg" runat="server"id="id1"/><%--變成服務器控件--%>
在控件里加兩項內容;runat="server" id="id1";將控件變成變成服務器控件,用戶控件下這兩項內容缺一不可,
防止不是在同一級文件夾下找不到文件,服務器自動轉換路徑
2:樣式表中用戶控件路徑 利用外部樣式表,不要寫內聯的樣式表
第一步:添加新項-樣式表
將用的頁面添加到head里面
樣式表頁面CSS.css
#aa {
background-image:url(../Image/暴風截圖2015102133868160.jpg) ;// ../
height:100px;
width:100px
}
第二步:在WUC.ascx頁面上:
< div id="aa" ></div>
3:外部資源路徑 外部的js文件 ,需要調用函數來處理路徑
第一步;添加新項-JavaScript文件
JavaScript.js頁面:
alert("你好");
第二步: WUC.ascx.cs:寫函數
public string ShowPath()
{
string path = "Script/JavaScript.js";
path = ResolveClientUrl(path);//獲取客戶端瀏覽器可以使用的路徑url
return path;
}
第三步: WUC.ascx頁面上:直接拖過控件
<script src="<%=ShowPath()%>"></script>
4:頁面路徑:用戶控件按鈕點擊跳轉頁面
用戶控件按鈕點擊時跳轉頁面:將相對路徑轉換為絕對路徑
~ 在服務器上表示網站的根目錄
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("~/main.aspx");
}
二:傳值
AAAA1:頁面向用戶控件傳值
a;findcontrol 傳值
.aspx按鈕中
//1.取頁面控件按鈕的值
string s = TextBox1.Text;
//2去用戶控件找文本框
TextBox text = WUC1.FindControl("TextBox1") as TextBox;
//3.將頁面文本值賦值給用戶控件的文本框
text.Text = s;
b:屬性傳值
第一步:用戶控件里面寫一個屬性;
public string Txt
{
get
{
return TextBox1.Text;
}
set
{
TextBox1.Text=value;
}
}
第二步:在頁面按鈕里寫
protected void Button1_Click(object sender, EventArgs e)
{
//WUC1.Txt = TextBox1.Text;//用頁面上取值給用戶控件
TextBox1.Text = WUC1.Txt;//從用戶控件里面取給頁面
}
第三步:頁面控件按鈕點擊時:
protected void Button1_Click(object sender, EventArgs e)
{
// 找到用戶控件的屬性
WUC1.Txt = TextBox1.Text;
}
BBBB2:用戶控件向頁面傳值:
a:用session傳值:
第一步:在用戶控件:
protected void Button1_Click(object sender, EventArgs e)
{
Session["txt"] = TextBox1.Text;
}
第二步:在頁面上重寫onloadcomplete()事件:在子類中對父類的方法的重寫,
防止數據延遲 override onloadcomplete()
// 在頁面加載完成后對頁面家安在完成后對父類方法的重寫
protected override void OnLoadComplete(EventArgs e)
{
base.OnLoadComplete(e);
if (Session["txt"] != null)
{
TextBox1.Text = Session["txt"].ToString();
}
}
建議用 b:委托或代理;指向方法的引用,引用指向方法,,好用但是難理解;只改變指向的方法即可 delegete
Dog d=New Dog();d引用指向的是Dog類的對象
string s="ssss";s指向的是字符串
public void Show(Dog);引用指向方法,指向方法的引用
1:定義一個類
class Dog
{
public int Dog;
public void walk();
}
2:聲明一個dog對象
Dog d;
3:將該引用指向Dog
d=New Dog();
4:用該引用調對象的方法
代理:指向方法的引用 和事件很像
簽名:返回類型 void,參數列表string s;
y 1:定義一個代理 //用戶控件里面
//加上delegate后,ShowDelegate不是原來的函數名而是代理類型名
public delegate void ShowDelegate(string s);
2:聲明一個代理的引用 //用戶控件里面
// 前面加上public后在其他類里面可以用
public ShowDelegate show;
3:在具體頁面上頁面加載時3;將代理的引用指向簽名匹配的(函數)方法; 可以和手動掛事件一樣 ,
+= 可以掛很多事件,事件本質就是一個特殊的代理。可以指向很多方法只要簽名一致就可以,
show=new ShowDelegate(DO);
protected void Page_Load(object sender, EventArgs e)
{
//3.將該引用指向簽名匹配的函數(方法)
//WUC1.Show = new WUC.ShowDelegate(ShowText);
WUC1.Show += ShowText;
}
4:用代理調用方法 在用戶控件button里面
show("aa");
protected void Button1_Click(object sender, EventArgs e)
{
//.調用Show方法
string s = TextBox1.Text;
Show(s);
}
5:在實際頁面寫函數。簽名必須和代理類型的一樣
public void Do(string s)
{
TextBox1.Text=A;
}