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


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

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

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

     

    用户控件:

     

    现在我在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中调用就可以了

     

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

     

    多思考,多创新,才是正道!
  • 相关阅读:
    带编译器的codeblocks下载地址
    联想拯救者s15k重装w10系统教程
    w10下Oracle 11g完全干净卸载
    小机房的树(codevs 2370)
    NOIP[2015] 运输计划(codevs 4632)
    ⑨要写信(codevs 1697)
    酒厂选址(codevs 1507)
    美丽的大树(codevs 2124)
    乘法运算(codevs 3254)
    货车运输(codevs 3287)
  • 原文地址:https://www.cnblogs.com/shuang121/p/1966365.html
Copyright © 2020-2023  润新知