如何在 Visual Studio 2008 IDE 中订阅页面事件

发布于 2024-10-17 06:23:51 字数 252 浏览 3 评论 0原文

重要
有人能解决这个问题吗?
如何在 VS 2008 中创建页面的 Init、Load、PreRender 等事件处理程序?当我们双击页面时,它将创建 Page_Load 事件。如何创建页面的其他事件?我在 ASP.NET 应用程序中使用 C#。
在此处输入图像描述
中没有“事件”选项卡图像。

IMPORTANT
Can any body solve this one ?
How to create page's Init, Load, PreRender etc. event handlers in VS 2008? When we double click on the page, it will create Page_Load event. How to create othere events of page? I am using c# in ASP.NET application.
enter image description here
There is no Event tab in image.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

浅忆流年 2024-10-24 06:23:51

要订阅 Page 事件,有以下方法:

  • 重写 Web.UI.Page 类的 on_xxx 方法。为了方便起见,只需开始输入private override,当您输入 override 关键字时,Intellisense 会自动告诉您可以覆盖的可用方法,您可以从那里选择它并按 Tab 键(原型方法将自动为您创建)。

  • 如果页面已将 AutoEventWireup 属性设置为 true,那么您只需定义一个原型和名称为 Page_[your event] 的方法,如 Page_Init< /code> 带有适当的参数。并且事件将自动连接

    <块引用>

    ASP.NET 页面框架支持一种机制,该机制使用 Web 窗体页面的 AutoEventWireup 属性来自动关联页面事件和事件处理程序方法。如果 @ Page 指令的 AutoEventWireup 属性设置为 TRUE(或者由于其默认值为 TRUE 而未指定),则 ASP.NET 页面框架会自动调用页面事件处理程序方法。

    例如,Page_Init 和 Page_Load 事件处理程序方法由 ASP.NET 页面框架显式调用,无需显式事件委托。

    但是,使用 AutoEventWireup 属性自动关联页面事件及其事件处理程序方法的缺点是事件处理程序方法必须具有标准的预定义名称。这限制了您命名事件处理程序方法的方式。


Following is the summary of page Events in their order:

  • PreInit
  • Init
  • InitComplete
  • PreLoad
  • 加载
  • 控制事件
  • LoadComplete
  • PreRender
  • SaveStateComplete
  • 渲染
  • 卸载

I usually refer this cheetsheet kind of image from MSDN to check which method to override:

在此处输入图像描述

For subscribing to Page events there are following ways:

  • override the on_xxx methods of the Web.UI.Page class. For ease just start typing private override when you will type override keyword the Intellisense will automatically tell you the available methods you can override and you can select it from there and press tab (The prototype for the method will automatically be created for you).

  • If the page has set AutoEventWireup attribute set to true then you can just define a method with prototype and name as Page_[your event] like Page_Init with appropriate parameters. And the events will will automatically be wired up.

    The ASP.NET page framework supports a mechanism that uses the AutoEventWireup attribute of a Web Forms page to automatically associate page events and event-handler methods. If the AutoEventWireup attribute of the @ Page directive is set to TRUE (or if it is not specified because its default value is TRUE), the ASP.NET page framework automatically calls page event-handler methods.

    For example, the Page_Init and Page_Load event-handler methods are explicitly called by the ASP.NET page framework, without an explicit event delegate.

    However, the drawback of using the AutoEventWireup attribute to automatically associate page events and their event-handler methods, is that event-handler methods must have standard, predefined names. This limits how you can name event-handler methods.


Following is the summary of page Events in their order:

  • PreInit
  • Init
  • InitComplete
  • PreLoad
  • Load
  • Control events
  • LoadComplete
  • PreRender
  • SaveStateComplete
  • Render
  • Unload


I usually refer this cheetsheet kind of image from MSDN to check which method to override:

enter image description here

溺ぐ爱和你が 2024-10-24 06:23:51

这是你的答案
在解决方案资源管理器中,右键单击页面并从上下文菜单中选择“查看组件设计器”,现在在属性窗口中您将看到事件选项卡。

Here is your answer
In the solution explorer, right click the page and select "View component designer" from the context menu, now in the properties window you will have the event tab.

冬天旳寂寞 2024-10-24 06:23:51

我更喜欢的方法是使用 On 方法,因此键入 override OnLoad 来设置加载事件处理程序、OnPreRender 等。这些方法中的每一个本质上都会调用相应的事件处理程序,如下所示:

protected override void OnInit(EventArgs e)
{
   base.OnInit(e); //don't remove
}

我还认为您可以添加一个事件处理程序手动:

protected void Page_Init(object sender, EventArgs e)
{

}

无需为此设置任何内容(无需显式侦听该事件),但我不能 100% 确定这一点。

HTH。

The way I prefer is to use the On method instead, so type override OnLoad to setup the load event handler, OnPreRender, etc. Each of these methods essentially calls the respective event handler, as in:

protected override void OnInit(EventArgs e)
{
   base.OnInit(e); //don't remove
}

I also think you can add an event handler manually:

protected void Page_Init(object sender, EventArgs e)
{

}

Without needing to set anything up for this (no explicit listening for the event), but I'm not 100% sure of this.

HTH.

随梦而飞# 2024-10-24 06:23:51

此链接可能会有所帮助——它是页面“生命周期”的 msdn 参考,包括创建您提到的其他事件。

http://msdn.microsoft.com/en-us/library/ms178472。 aspx

除了双击页面控件(按钮、超链接、数据控件)之外,查看包含页面其他“生命周期”事件的 c# 文件时还有一个下拉列表,以及您创建的其他控制事件。

在此处输入图像描述

This link may be helpful -- It is the msdn reference for a pages "life cycle" including creating of other events like you mentioned.

http://msdn.microsoft.com/en-us/library/ms178472.aspx

In addition to double clicking on page controls (buttons, hyperlinks, datacontrols), there is a drop-down list when looking at the c# file that contains other "life-cycle" events of a page, as well as other control events you have created.

enter image description here

网白 2024-10-24 06:23:51

看看这个: http://msdn .microsoft.com/en-us/library/6w2tb12s%28v=VS.90%29.aspx(VS 2008版本)

它表示您可以使用名称Page_event以声明方式创建方法。

例如,要为页面的 Load 事件创建处理程序,请创建名为 Page_Load 的方法。

ASP.NET 页面自动将页面事件绑定到名为 Page_event 的方法。此自动绑定由 @ Page 指令中的 AutoEventWireup 属性配置,默认设置为 true。如果将 AutoEventWireup 设置为 false,页面不会自动搜索使用 Page_event 命名约定的方法。

为我工作!

Take a look at this: http://msdn.microsoft.com/en-us/library/6w2tb12s%28v=VS.90%29.aspx (VS 2008 version)

It says that you can create a method declaratively with the name Page_event.

For example, to create a handler for the page's Load event, create a method named Page_Load.

ASP.NET pages automatically bind page events to methods that have the name Page_event. This automatic binding is configured by the AutoEventWireup attribute in the @ Page directive, which is set to true by default. If you set AutoEventWireup to false, the page does not automatically search for methods that use the Page_event naming convention.

Worked for me!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文