![]() |
1
6
您希望在父级中订阅的控件上创建一个事件。见 OdeToCode 举个例子。 这篇文章是为了长寿: 一些用户控件是完全独立的,例如,显示当前股票报价的用户控件不需要与页面上的任何其他内容交互。其他用户控件将包含要回发的按钮。尽管可以从包含页面订阅button click事件,但是这样做会破坏一些面向对象的封装规则。更好的方法是在用户控件中发布事件,以允许任何相关方处理该事件。 这种技术通常被称为事件冒泡,因为事件可以继续通过层,从底部(用户控件)开始,并可能到达顶层(页面),就像一个气泡向上移动香槟杯一样。 首先,让_s创建一个附加按钮的用户控件。
用户控件的代码隐藏如下所示。
用户控件指定声明委托的公共事件(BubbleClick)。任何对BubbleClick事件感兴趣的人都可以添加一个EventHandler方法来在事件触发时执行,就像用户控件为按钮触发Click事件时添加一个EventHandler一样。 在onBubbleClick事件中,我们首先检查是否有人连接到该事件(BubbleClick!=null),然后我们可以通过调用BubbleClick、传递EventArgs参数并将用户控件(this)设置为事件发送者来调用所有事件处理方法。注意,我们也在使用response.write来跟踪执行流。 ASPX页面现在可以让用户控件工作。
在页面的代码隐藏中。
注意,在初始化组件方法期间,父页只需要添加一个事件处理程序。当我们收到事件时,我们将再次使用reponse.write来跟踪执行流程。 警告:如果在任何时候事件神秘地停止工作,请检查InitializeComponent方法以确保设计器没有删除任何添加事件处理程序的代码。 |
![]() |
2
2
1)在用户控件中声明公共事件 2)在用户控件内发布适当的RaiseEvent 3)在父页的init事件中,使用addhandler将control.event分配给要使用的处理过程。 很简单! |
![]() |
3
0
我在Odetocode上找到了与@Lordsklar在他接受的解决方案中所联系到的相同的解决方案。问题是我需要一个用VB而不是用C语言的解决方案。它翻译得不好。具体来说,检查onBubbleClick中的事件处理程序是否为空在VB中不起作用,因为编译器认为我正试图调用该事件,并给出了一个错误,该错误表示“…不能直接调用。使用一个“raiseEvent”语句来引发一个事件,“这是一个代码解决方案的VB翻译,使用一个名为CountryDropDownList的控件。 首先,让_s创建一个附加了下拉列表的用户控件。
用户控件的代码隐藏如下所示。
ASPX页面现在可以让用户控件工作。
在页面的代码隐藏中:
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 5 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 5 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 6 月前 |