用戶控件 WebUserControl .ascx


用戶控件: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;
        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM