我在ASP.NET中说过这个层次结构:
page
user control 1
user control 2
control 3
我希望能够做的是,当控件3(它可以是任何类型的控件,我想一般地执行此操作)让用户做一些触发回发的事情,它会将某些事件冒泡到用户控件2,或者甚至可能是用户控件1(虽然我也可以让UC 2手动冒泡事件)。
同样,我想要一般地这样做,以便层次结构可以改变,它仍然有效。也许有多个控件(控件4等)或数据绑定控件。这可能吗?
感谢。
答案 0 :(得分:11)
事件冒泡内置于asp.net
检查出来:http://www.4guysfromrolla.com/articles/051105-1.aspx
基本上,要举起你想要冒泡的事件:
RaiseBubbleEvent(this, args);
然后抓住它:
protected override bool OnBubbleEvent(object source, EventArgs e) {
bool handled = false;
if (e is TemplatedListCommandEventArgs) {
TemplatedListCommandEventArgs ce = (TemplatedListCommandEventArgs)e;
OnItemCommand(ce);
handled = true;
}
return handled;
}
如代码所暗示的,如果此方法返回false,则事件将继续冒泡控制层次结构
RaiseBubbleEvent的实现 由Control提供,不能 覆盖。 RaiseBubbleEvent发送 事件数据上升到层次结构 控制的父母。处理或处理 提高泡沫事件,控制 必须覆盖OnBubbleEvent 方法
来自MSDN:http://msdn.microsoft.com/en-us/library/aa719644(v=vs.71).aspx