您的位置:首页 > 其它

Web用户控件和Web主页面的事件传递

2005-10-26 15:21 309 查看
定义一个用户控件,让其自身触发的事件能够触发主页面的事件。

首先,定义一个用户控件:


命名为WUC02.ascx,在其中放置一个TextBox,把AutoPostBack设置为True.

为其添加一个TextChange事件,页面主要代码如下(代码有省略):

public abstract class WUC02 : System.Web.UI.UserControl

{

protected System.Web.UI.WebControls.TextBox txt1;

public delegate void myDelegate(object sender,myEventArgs e); //定义代理

public event myDelegate myEvent; //定义事件

private void txt1_TextChanged(object sender, System.EventArgs e)

{

if(txt1.Text == "yangxi")

{

myEventArgs eveArgs = new myEventArgs();

eveArgs.Value = "/"" + txt1.Text + "/" is pass by the Event Args";

if(myEvent != null)

{

myEvent(txt1,eveArgs); //触发事件

}

}

else

{

txt1.Text = "";

}

}

}

//自定义事件的参数

public class myEventArgs:System.EventArgs

{

private string _value;

public string Value

{

get{ return _value; }

set{ _value = value;}

}

}

主页面,如下图:






后台主要代码如下(代码有省略):

public class WebForm10 : System.Web.UI.Page

{

protected System.Web.UI.WebControls.PlaceHolder PH1;

protected System.Web.UI.WebControls.Label lbl1;

protected WUC02 myUC2;

private void Page_Load(object sender, System.EventArgs e)

{

myUC2 = (WUC02)LoadControl("./WUC02.ascx");//添加用户控件

myUC2.myEvent += new WUC02.myDelegate(this.OnMyEvent); //注册事件

PH1.Controls.Add(myUC2);

}

//事件触发的方法

private void OnMyEvent(object sender,myEventArgs e)

{

lbl1.Text = e.Value;

}

运行如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐