4

以下方法返回错误:'Event init cannot be found'并在 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

4 回答 4

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
于 2012-11-16T21:11:21.400 回答
1

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

AddHandler Me.Init, AddressOf Page_Init

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

于 2012-11-16T21:17:31.397 回答
1

出色地,

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

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

设置AutoEventWireup="false"并保存其不必要的性能损失,处理程序仍应触发,因为它显式地触发HandlesPage.Init事件。

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

于 2012-11-23T09:36:42.313 回答
0

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

于 2015-05-21T13:59:46.113 回答