zoukankan      html  css  js  c++  java
  • 委托用户控件到普通页面之间的传值

    委托--用户控件到普通页面之间的传值

    用户控件在程序中我们经常用到,但是用户控件到普通页面之间的传值,却很少用,在这里要使用委托去实现

    所谓委托,通俗的说就是代替别人去做事情,下面举个例子就明白了!假如我要送个同事小王一箱水果,由于他家比较远,就让离他家比较近的小张帮我去送给他,那么小张就是我委托的人。下面结合上面的例子看看在程序中如何通过委托去处理一下事件

     

    用户控件:

     

    现在我在Default.aspx中使用了用户控件,而且我想在点击Button的时候把文本框中的值传到Default.aspx的某一个Lable中,那么这个时候就可以使用委托了,怎么实现呢?

    在这里我们可以理解把用户控件看成是我,页面Default.aspx看成是小王,那么就少个小张了,小张是谁呢,不错,就是我们要定义使用的委托。

    下面我们来描述一下小张,也就是定义一个委托:

    public delegate void Onclick(object sender,SendMessage e);

     

    也就说小张必须要有这个能力,上面就是定义他的这个能力的,任何人让他做这样的事情,都能够完成。所以object sender就是代表传递的介质,也就是手,SendMessage e就是箱子。

    为了能让这个箱子在他们之间传递,在这里我们要定义一个箱子,也就是一个类,然后在类里定义一些变量,代表可以放到箱子里的东西!具体的东西要看委托人想放上面东西在里面了!

    public class SendMessage:EventArgs

    {

    private string message;

     

    public string Message

    {

    get { return message; }

    set { message = value; }

    }

    public SendMessage(string message)

    {

    this.Message = message;

    }

    }

     

    其次来看看我,首先我要把小张找过来,也就是在用户控件中声明一下

    public event Onclick OnClick;

    然后当我用手把篮子交给他,也就是要触发按钮事件

    protected void Button2_Click(object sender, EventArgs e)

    {

    if(OnClick!=null)

    {

    OnClick(this,new SendMessage(this.TextBox2.Text));

    }

    }

    小张到了小王家之后,要把东西交给他,也就是在Default.aspx中

    protected void Page_Load(object sender, EventArgs e)

    {

    UserControl1.OnClick += new Onclick(UserControl1_OnClick);

    // UserControl1.OnClick += tab双击

    }

    void UserControl1_OnClick(object sender, SendMessage e)

    {

    Response.Write("<script>alert('从用户控件传过来的值是:"+e.Message+"')</script>");

    }

     

    如果直接传递用户控件中的值,按钮在Default.aspx这边的话,就没那么麻烦了,直接在用户控件中定义一个属性,即要传递的值的属性,然后再Default.aspx中调用就可以了

     

    上面讲的就是委托,可以好好想想其中的原理!

     

    多思考,多创新,才是正道!
  • 相关阅读:
    java list随机截取(洗牌)
    LINUX安装Docker及Portainer可视化界面
    总结一些选题
    深入理解BIO、NIO、AIO
    InnoDB和MyISAM存储引擎的区别
    MyBatis的解析和运行原理
    [杂项/无聊向]《美食大战老鼠》强卡最优策略搜索代码(非玩家勿入)
    CSP 2019 游记
    NOI 2019 游记
    Comet OJ
  • 原文地址:https://www.cnblogs.com/shuang121/p/1966365.html
Copyright © 2011-2022 走看看