日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

.Net用户控件

發布時間:2025/7/25 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .Net用户控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用戶控件
用戶控件是個什么東西?
自定義的反復重用的控件集合

好處?
1.代碼重用
2.結構良好
3.分工開發
4.局部緩存

難點:
一.交換信息:

注意信息的交換只在相鄰層之間進行交換,如果是嵌套交換信息除Session外都需要一層一層的寫代碼交互

(一)從頁面向用戶控件交換信息。代碼寫在頁面中。

1.用戶控件名.FindControl("用戶控件中的控件的ID")

TextBox textBox1 = WUC1.FindControl("TextBox1") as TextBox;

暴力轉換:盡量少用

案例:添加按鈕click屬性,點擊后往用戶控件中傳信息

protected void btn_Click(object sender, EventArgs e){string s = Label1.Text;TextBox textbox1 = WebUC1.FindControl("TextBox1") as TextBox;textbox1.Text = s;}

效果如圖:

?

?

2.事先在用戶控件中定義public屬性,通過屬性為里面的控件賦值或取值。
用戶控件中的代碼:

public string TextValue{get {return TextBox1.Text;}set{TextBox1.Text = value;//設置文本框里面的值 }}

?寫好屬性之后會在設計界面用戶控件屬性的雜項中出現該屬性名,如下圖


頁面中的代碼:

同方法一:在按鈕上添加click事件

protected void Button1_Click(object sender, EventArgs e){WebUC1.TextValue = Label2.Text;}

效果如圖:

(二)從用戶控件向頁面交換信息。代碼要寫用戶控件。

1.session
第一步:在用戶控件的按鈕中把數據放在Session中。

給button加click事件

protected void Button1_Click(object sender, EventArgs e){Session["text"] = TextBox1.Text;}

第二步:在頁面的OnLoadComplete事件中,從Session中取出數據來,顯示在頁面上。?

在頁面中重寫override函數 onloadComplete

這樣在頁面加載完成后執行下面的方法,判斷Session["text"]中如果沒有信息就什么也不執行,注意第一行 base.OnLoadComplete(e)不能刪

protected override void OnLoadComplete(EventArgs e){base.OnLoadComplete(e);if (Session["text"]!=null){Label3.Text = Session["text"].ToString();}}

?

?

效果如圖:

?

2.代理、委托 delegate

指向方法(動作)的引用。 Dog d = new Dog();
類比:類的使用 - 指向對象的引用
類的使用步驟:
第一步:用class 關鍵字定義一個類的類型
public class Dog
{
//成員變量定義
//成員屬性定義
//成員方法定義
}
第二步:使用這個新的類型定義一個變量(類的變量)引用。
Dog d;

第三步:把這個變量引用指向一個新對象。
d = new Dog();

第四步:通過調用引用,實現對對象的調用。
d.Name
d.Bark()

代理的使用步驟:
第一步: 使用 delegate 定義一個新的代理類型。
public delegate 返回類型 代理類型名( 參數定義);
例如:public delegate void ShowDelegate(string s);
第二步:使用新的代理類型定義一個變量(代理變量)
ShowDelegate Show;
第三步:把代理變量指向一個新的方法
Show = new ShowDelegate(方法名);
第四步:通過調用代理來實現對方法的調用。
Show("hello");

?案例:從一個用戶控件中向另一個用戶控件加添加節點

定義一個delegate代理ShowDelegate,然后生命一個代理實例化

public delegate void ShowDeletgate();//定義代理public ShowDeletgate Show;//實例化

給button寫click事件

protected void btnAddNode_Click(object sender, EventArgs e){if (Session["list"] == null){List<FlowPath> temp = new List<FlowPath>();Session["list"] = temp;}List<FlowPath> list = Session["list"] as List<FlowPath>;list = list.OrderBy(p => p.Orders).ToList();int order = 1;if (list.Count>0){order = list.Last().Orders.Value+1;}FlowPath data = new FlowPath();if (Request["rbnode"] != null)//判斷是否選擇了radio {data.Code = DateTime.Now.ToString("yyyyMMddhhmmss") + order + Session["uid"].ToString();data.EmpId = Request["rbnode"].ToString();data.Orders = order;list.Add(data);Session["list"] = list;if (Show != null)//調用代理,代理名不加括號 {Show();//使用代理--類似于使用方法 }}else{Label1.Text = "請選擇要加載的節點";}
  }

?給代理寫所需要綁定的方法(可以是在另一個用戶控件上--誰需要這個方法在誰上面寫)

public void ShowSession(){if (Session["list"]!=null){Repeater1.DataSource = Session["list"] as List<FlowPath>;Repeater1.DataBind();}}

給代理綁定方法--寫在加載的頁面上load里面,注意不要寫在if(!IsPostBack中)因為每次加載都需要綁定

綁定使用方法同屬性如:

UserList1.Show(show代理) = new UserList.ShowDeletgate(NodesShow1.ShowSession--這個ShowSession是個方法但是不加小括號)

?

protected void Page_Load(object sender, EventArgs e){if (Session["uid"] == null){Response.Redirect("login.aspx");}if (!IsPostBack){}UserList1.Show = new UserList.ShowDeletgate(NodesShow1.ShowSession);//注意這里綁定方法的時候是 方法名 不帶小括號}

?

?

二.路徑:

1.控件路徑:圖片、超鏈接

使用服務端的控件。標準控件或者HTML標記加上runat=server.

這樣服務端就會自動轉換成正確的路徑出來。

如:

<img id="img1" runat="server" src="images/delete.png" />

注意加runat="sever"必須加上id=""

?

?

2.樣式表中值的路徑:background-image:url(路徑)

不要使用內聯樣式,使用外部樣式表來控制圖片路徑。

首先在解決方案下添加外部樣式表

?

代碼如下:

.dd {background-image:url(../images/h.png); }

注意路徑必須正確:確保從樣式表可以找到對應的路徑

然后,給需要加樣式表的標簽一個class="dd"名(這里用的.dd給class 也可以給加id="dd"樣式表改為#dd)

最后在需要使用的頁面把樣式表拖到,源頁面的<head></head>中

?

?

?

3.外部資源路徑 - 用戶控件中引入外部腳本文件
使用 string path = ResoveClientUrl("服務器端路徑"); //返回的是客戶端對應的路徑

首先在用戶控件上加<script></script>指定路徑寫一個函數?注意不是# 是=,如下

<script src="<%= ShowScriptPath() %>" ></script>

然后在解決方案下添加外部腳本

?

腳本代碼:

alert("這是外部腳本文件的內容")

最后在cs代碼界面添加對應的方法

?

public string ShowScriptPath(){string path = "Scripts/JavaScript.js";//外部樣式表存放路徑path = this.ResolveClientUrl(path);//重新解析為可識別的路徑return path;}

?

?

4.C#代碼的調用路徑
Response.Redirect("頁面");
使用應用程序路徑的根來解決

在路徑前面加上一個 ~ 符號--從跟目錄開始尋找
Response.Redirect("~/Default.aspx")

轉載于:https://www.cnblogs.com/liujiangping/p/4759051.html

總結

以上是生活随笔為你收集整理的.Net用户控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。