首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

50分 求解!发了好几天帖子 竟然没有好办法解决办法

2012-02-11 
50分 求解!发了好几天帖子 竟然没有好办法问题:建立两个用户控件在第一个用户控件里面 放一个 文本框控件,

50分 求解!发了好几天帖子 竟然没有好办法
问题:
建立两个用户控件 在第一个用户控件里面 放一个 文本框控件,在第二个用户控件里面放一个按钮, 然后把两个用户控件托方到 首页上!

结果:
在首页上点击 第二个用户控件的按钮 让第一个控件的文本框 显示一句话 (随便什么都行,要得是过程)

注意:不要用客户端代码,只要求用服务器端代码,用事件委托也行,用其他的办法也可以,只要达到效果! ***** 要求要服务器端代码*******

解决办法 过程要详细! 麻烦各位了,我都发了好几天帖子了!压抑!

[解决办法]

C# code
//MyEventArgs.cs的代码//自定义一个派生自EventArgs的类,封装了按钮上的文本public class MyEventArgs : EventArgs{    private string controlName;    public string ControlName    {        get { return controlName; }    }    public MyEventArgs(string controlName)    {        this.controlName = controlName;    }}//--------------------------------------//用户控件1(包含文本框的)代码public partial class WebUserControl1 : System.Web.UI.UserControl{    //给该用户控件定义一个属性,用户设置/获取文本框中的内容    public string Content    {        get { return this.TextBox1.Text; }        set { this.TextBox1.Text = value; }    }}//----------------------------------------------//用户控件2(包含按钮的)代码public partial class WebUserControl2 : System.Web.UI.UserControl{    public delegate void MyButtonClickHandler(object sender, MyEventArgs e);//定义一个委托,注意这里用的是MyEventArgs    public event MyButtonClickHandler ButtonClick; //给该用户控件定义一个按钮事件    //引发事件的方法    protected virtual void OnButtonClick(MyEventArgs e) //这里也用的是MyEventArgs    {        if (ButtonClick != null) //但订阅器不为空时触发,也就是在客户端订阅了该事件时触发        {            ButtonClick(this, e); //这里实际上调用了委托给客户端的方法        }    }    protected void Page_Load(object sender, EventArgs e)    {    }    //这个是普通的按钮事件调用的函数(也就是说用户控件中一般按钮单击事件触发了整个用户控件的ButtonClick事件)    protected void Button1_Click(object sender, EventArgs e)     {        OnButtonClick(new MyEventArgs(this.Button1.Text)); //触发按钮事件(这里实例化了一个MyEventArgs作为参数,里面附加了所电击的按钮的文本内容)    }}//-------------------------------//default页面代码public partial class _Default : System.Web.UI.Page {    protected void Page_Load(object sender, EventArgs e)    {        WebUserControl2_1.ButtonClick += new WebUserControl2.MyButtonClickHandler(ButtonClick); //这里把用户控件2的事件委托给ButtonClick方法    }    //委托给的方法    private void ButtonClick(object sender,MyEventArgs e)    {        WebUserControl1_1.Content = e.ControlName; //这里则把用户控件1中文本框的内容设置为 MyEventArgs实例封装的信息    }} 

热点排行