西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)C#.NET → WebUserControl用戶控件總結(jié)歸納

WebUserControl用戶控件總結(jié)歸納

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:本站整理時(shí)間:2011/1/29 21:30:36字體大。A-A+

作者:佚名點(diǎn)擊:378次評(píng)論:0次標(biāo)簽: 用戶控件

  • 類型:行業(yè)軟件大小:382M語言:中文 評(píng)分:10.0
  • 標(biāo)簽:
立即下載

看了好多人都寫了用戶控件方面的文章,俺自己也來一篇總結(jié),這應(yīng)該不算抄襲吧,嘿嘿!!新建一個(gè)用戶控件:

右擊項(xiàng)目添加新項(xiàng),彈出如下圖所示界面,選擇web用戶控件;

為用戶控件添加屬性:01publicstringUserName
02
{
03
    get
04
    {
05
        returntxtUserName.Text;
06
    }
07    set
08    {
09        txtUserName.Text = value;
10    }
11
}

編譯之后在客戶端我們就可以訪問到這個(gè)UserName屬性,對(duì)其進(jìn)行賦值取值操作,在客戶端的用戶控件屬性一欄看到被公開的UserName屬性: 

當(dāng)然我們也可以不以公開屬性的方式與外界交互,我們可以在客戶端通過FindControl的方式直接操作用戶控件內(nèi)部的控件;

為用戶控件添加事件:

這樣可以在客戶端方便操作:
 01
publicpartialclassWebUserControl : System.Web.UI.UserControl
02
{
03
    public  delegate  void  submithandler(objectsender,EventArgs e);
04
    public  eventsubmithandler MySubmitEvent;
05    protectedvoidPage_Load(objectsender, EventArgs e)
06    {
07  
08    }
09
    publicstringUserName
10
    {
11
        get
12
        {
13
            returntxtUserName.Text;
14
        }
15
        set
16
        {
17
            txtUserName.Text = value;
18
       &
19
    }
20     protectedvoidButton1_Click(objectsender, EventArgs e)
21     {
22         if(MySubmitEvent != null)
23        
 {
24             MySubmitEvent(this, e);
25         }
26     }
27    
28 }

首先定義了一個(gè)委托(這里叫submithandler),他有兩個(gè)參數(shù)(也可以不定義參數(shù),參數(shù)可以用于傳遞數(shù)據(jù)),

 然后定義了一個(gè)委托變量的事件MySubmitEvent;

最后在當(dāng)前的事件中判斷事件是否被訂閱,如果有訂閱者,則觸發(fā)這個(gè)事件,這個(gè)被公開的事件的訂閱是被放在客戶端的,由客戶端定義事件的回調(diào)函數(shù)(我覺得叫回調(diào)函數(shù)挺容易理解的,不知道這么叫對(duì)不對(duì)?);

這樣用戶控件的兩個(gè)與外界交互的重要方式就搞定了,在使用用戶控件的時(shí)候還有一個(gè)地方需要注意,就是用戶控件內(nèi)部的控件的ID在客戶端會(huì)解析為用戶控件ID_子控件ID的形式,

所以在用客戶端腳本操作

他們的時(shí)候需要用到一個(gè)重要的屬性ClientID;

01 <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>

02 <asp:LiteralID="Literal1"runat="server">用戶名:</asp:Literal><asp:TextBoxID="txtUserName"runat="server"></asp:TextBox><br/>

03 <asp:LiteralID="Literal2"runat="server">密碼:</asp:Literal><asp:TextBoxID="txtPassWord"runat="server"></asp:TextBox><br/>

04 <asp:ButtonID="Button1"runat="server"Text="獲取用戶名"onclick="Button1_Click"/> 05 <inputid="Button2"type="button"value="input方式獲取用戶名"  onclick="ShowName()"/>  06 <scripttype="text/javascript"> 07     function ShowName() { 08         alert(document.getElementById("<%=txtUserName.ClientID%>").value); 09     } 10 </script>

這里txtUserName為用戶控件內(nèi)部的一個(gè)子控件的ID,txtUserName.ClientID是獲取用戶控件在客戶端解析之后的最終ID,而<%=txtUserName.ClientID%>得意思就是在asp.net頁面執(zhí)行這段服務(wù)器端代碼

當(dāng)然對(duì)于ClientID的重要還表現(xiàn)在模板以及模板控件的使用上;

執(zhí)行之后就輸出在這個(gè)位置供腳本代碼使用;

向客戶頁面添加用戶控件:

1.打開需要用到用戶控件的頁面的設(shè)計(jì)界面,直接將用戶控件拖入指定的位置,這樣的話VS會(huì)自動(dòng)的把必要地引用自動(dòng)幫助我們加上,在源碼也拖是沒有效果哦;

2.就是手動(dòng)的敲出那些引用;


使用用戶控件:

上面我們已經(jīng)為用戶控件公開了屬性和事件,現(xiàn)在我們就在客戶端使用這些東西;
01 using System;
02 using System.Collections.Generic;

03 using System.Linq;

04 using System.Web; 05 using System.Web.UI; 06 using System.Web.UI.WebControls; 07   08 public partial class _Default : System.Web.UI.Page  09 { 10     protected void Page_Load(object sender, EventArgs e) 11     { 12           13             //WebUserControl1.UserName = "謝龍寶"; 14           TextBox  txt=WebUserControl1.FindControl("txtUserName")as TextBox; 15           txt.Text = "謝龍寶"; 16           17           WebUserControl1.MySubmitEvent += new WebUserControl.submithandler(WebUserControl1_MySubmitEvent); 18     } 19   20     void WebUserControl1_MySubmitEvent(object sender, EventArgs e) 21     { 22      23         Response.Write(WebUserControl1.UserName); 24     } 25      26 }

屬性的使用時(shí)很簡(jiǎn)單的,像使用普通的屬性一樣取值呀賦值呀,通過FindControl的方式直接操作;

 至于事件的使用則也水到渠成,上面說了事件的訂閱時(shí)放在客戶端的,所以這里我們就在客戶頁面的加載時(shí)訂閱事件(可以理解為給事件指定了一個(gè)處理函數(shù)(回調(diào)函數(shù)))

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)