gpt4 book ai didi

asp.net - 如何从用户控件处理页面事件? (VB.net)

转载 作者:行者123 更新时间:2023-12-03 00:33:09 27 4
gpt4 key购买 nike

我希望在用户控件生命周期的“预加载”阶段执行一些代码。但是预加载事件仅适用于 Page 对象。因此,我将以下方法添加到我的用户控件中:

Private Sub Page_PreLoad(ByVal sender As Object, ByVal e As System.EventArgs) Handles Page.PreLoad 

但是,我知道会出现编译错误:“Handles 子句需要在包含类型或其基本类型之一中定义的 WithEvents 变量”

由于 Page 属性是从 UserControl 继承的,我不知道如何轻松完成此操作。

非常感谢您的帮助!

最佳答案

很抱歉提供了一个 C# 示例,但我不记得如何在 VB 中执行此操作...

无论如何,在 UserControl 的 Init 中,您可以显式指定 Page_PreLoad 方法作为 UserControl 的 Page 属性的 PreLoad 事件的处理程序,而不是在方法声明中使用“Handles”语法。您的示例正在执行的操作是尝试将事件处理程序分配给 UserControl 对象上的事件,以处理 UserControl 对象不会引发的事件。正如您所指出的,UserControl 并不继承自 Page,而 Page 是 PreLoad 事件所在的位置。不过,UserControl 确实包含 Page 对象作为其属性之一,该对象又将 PreLoad 公开为您可以向其分配处理程序的事件。不管怎样,这会编译并接近您正在寻找的内容(使用 C 风格注释来保留 WMD 语法突出显示)。

Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
// this assigns Page_PreLoad as the event handler
// for the PreLoad event of the Control's Page property
AddHandler Me.Page.PreLoad, AddressOf Page_PreLoad
MyBase.OnInit(e)
End Sub

Private Sub Page_PreLoad(ByVal sender As Object, ByVal e As System.EventArgs)
// do something here
End Sub

我不确定这是否符合您的目的 - 正如 Stephen Wrighton 上面指出的那样,对于页面生命周期中的不同事件之一可能有更好的方法。然而,根据他所说的,这应该可行,因为调用控件的 OnInit,其中进行事件处理程序分配,然后引发页面的 OnLoad 事件,然后执行控件内的事件处理程序。

关于asp.net - 如何从用户控件处理页面事件? (VB.net),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/586755/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com