您的位置:首页 > 其它

利用事件委托来实现UserControls之间的交互

2005-09-29 18:08 393 查看
在from1.aspx页上加入2个用户控件,名为test1.ascx和test2.ascx。

在test1.ascx中加入一个文本框TextBox1,在test2.ascx中加入一个按钮btnOK。

在test2.asc.cs中加入下面的代码:
private void btnOK_Click(object sender, System.EventArgs e)
{
OnCancel(new EventArgs());
}

public static event CancelEventHandler Cancel; //注意:声明事件要是静态的。

protected virtual void OnCancel(EventArgs e)
{
if(Cancel!=null)
{
Cancel(this,e);
}
}

public delegate void CancelEventHandler(object sender,EventArgs e); 在test1.ascx.cs中加入下面的代码:
//要调用执行的方法
private void test1_Message(object sender,EventArgs e)
{
this.TextBox1.Text="测试";
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
//将test_Message加入Cancel事件
test2.Cancel+=new CancelEventHandler(test1_Message);

}
#endregion

 这样,当单击test2上的btnOK时,就会执行OnCancel调用Cantel事件并执行test1中的test1_Message方法。这只是一个简单的例子,但这种应用很广泛,你可以用在自定义组件的交互,可以调用方法执行更复杂的逻辑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: