关于事件委托!!!

i169net1 i169net1 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
http://community.csdn.net/Expert/topic/4811/4811871.xml?temp=.8033869

在用户控件中有两个按钮,一个‘提交’,另一个‘取消’...
在点击这个‘提交’后,用户控件完成一些自身的操作,但却无法对调用它的父页面进行操作,比如:提交后,把父页面上的Lable显示为另外一个文本。
(就算可以做到这点,但用户控件永远无法预知父页面的具体情况,比如这个Lable的ID会是什么?)

我用了事件委托(不知道这个算不算是...):
-------用户控件.cs--------
private static readonly object EventClick1;
protected System.Web.UI.WebControls.Button Button1;
private static readonly object EventClick2;
protected System.Web.UI.WebControls.Button Button2;

public event EventHandler Click1 //‘提交’
{
add
{
base.Events.AddHandler(WebUserControl1.EventClick1,value);
}
remove
{
base.Events.RemoveHandler(WebUserControl1.EventClick1,value);
}
}

public event EventHandler Click2 //‘取消’
{
add
{
base.Events.AddHandler(WebUserControl1.EventClick2,value);
}
remove
{
base.Events.RemoveHandler(WebUserControl1.EventClick2,value);
}
}

private void Button1_Click(object sender, System.EventArgs e) //‘提交’事件函数
{
//.....某些操作......//
EventHandler handler1 = (EventHandler) base.Events[EventClick];
if(handler1!=null)
{
handler1(this,e);
}
}

private void Button2_Click(object sender, System.EventArgs e) //‘取消’事件函数
{
//.....某些操作......//
EventHandler handler2 = (EventHandler) base.Events[EventClick2];
if(handler2!=null)
{
handler2(this,e);
}
}

-------父页面.cs--------
1、在Page_Load事件中加 (不进行IsPostBack属性的检测):
用户控件的类名 wb = (用户控件的类名)Page.FindControl("myeditc"); //用户控件
if(wb!=null)
{
wb.Click+=new EventHandler(wb_Click);
wb.Click2+=new EventHandler(wb_Click2);
}
2、写这两个事件函数:
private void wb_Click(object sender, EventArgs e) //提交
{
this.Page.Response.Write("<script>alert('您选择了确定!');</script>");
//再做一些别的什么...
}
private void wb_Click2(object sender, EventArgs e) //取消
{
this.Page.Response.Write("<script>alert('您选择了取消!');</script>");
//再做一些别的什么...
}

===============================================

测试后,发现:
不管是点‘提交’还是‘取消’,两个事件函数都被执行过...
先提示:“您选择了确定!”
接着又提示:“您选择了取消!”
其他没问题...

不知道应该怎么让它们各自执行各的事件?
望高人请教!!!
谢谢!!!

...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
i169net1
.NET社区 62,271 成员 668,968 内容