zoukankan      html  css  js  c++  java
  • 用户控件 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;
            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;
            }
  • 相关阅读:
    CF1202F You Are Given Some Letters...
    CF1178E Archaeology
    PTA (Advanced Level) 1005 Spell It Right
    PTA (Advanced Level) 1004 Counting Leaves
    Qt5——从零开始的Hello World教程(Qt Creator)
    PTA (Advanced Level) 1003 Emergency
    PTA (Advanced Level) 1002 A+B for Polynomials
    HDU 1272 小希的迷宫
    FZU 2150 Fire Game
    HihoCoder
  • 原文地址:https://www.cnblogs.com/cf924823/p/5157633.html
Copyright © 2011-2022 走看看