Sub Page_Init方法:找不到事件init

时间:2012-11-12 15:22:42

标签: asp.net vb.net events init

以下方法返回错误:'无法找到事件init'并在System.Web.UI.Page

上出现错误

Visual Studio 2010,框架3.5

Public Class_default
    Inherits System.Web.UI.Page

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

End Sub

4 个答案:

答案 0 :(得分:4)

我不是VB.NET专家(我在C#上写)但我可以说问题的原因是你需要覆盖 OnInit 方法而不是Page_Init。

因此,您需要使用以下代码:

Public Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Friend Overrides Sub OnInit(ByVal e As EventArgs)
        MyBase.OnInit(e)
    End Sub
End Class

答案 1 :(得分:1)

我认为Maxim是正确的,但您也可以通过执行以下操作添加事件处理程序:

AddHandler Me.Init, AddressOf Page_Init

我认为这是对的,对不起我的VB很生锈。

答案 2 :(得分:1)

那么,

我假设您在标记中使用AutoEventWireup="true",但您还使用Handles关键字标记了处理程序。

AutoEventWireup不起作用,它无法直接访问您班级的私人成员。

设置AutoEventWireup="false"并保存其needless performance penalty,处理程序仍应触发,因为它明确Handles Page.Init事件。

由于您正在明确处理事件,因此您也可以自由更改事件处理程序的名称并删除丑陋的_

答案 3 :(得分:0)

大多数Crystal Reports代码都可能出现在Page_Load事件中。如果您将其移至Page_Init,您将发现它可以正常工作。

相关问题