visual studio 2010 - preInit方法

web*_*ad3 1 asp.net visual-studio-2010 c#-4.0

我正在使用VS2010,我正在阅读我的书中的一些例子,我正在尝试找到preInit方法.我似乎在VS2008中回忆起VB.Net所有的Page LifeCycle方法都在右上角,下拉为"Page"元素(左上角).

就像我说我使用的是VS2010和C#.在我的左上角下拉,我看到的是_Default.我看到的唯一PLC事件是Page_Load.我是否必须手动输入preInit方法,或者有没有办法让它自动填充,就像我在VB中使用2008看到的那样?

在此输入图像描述

我跟着基里尔的回答,它做了他说过的一切.但是,这就是它产生的(Default.aspx是我正在使用的页面的名称):

private void _Default_PreInit(object sender, EventArgs e)
{
 ...
}
Run Code Online (Sandbox Code Playgroud)

当我在那里放置一个断点时,它从未进入该代码块并且代码从未运行过......

但是,当我使用以下方法手动将其写出来时:

protected void Page_PreInit(object sender,EventsArgs)
{
...
}
Run Code Online (Sandbox Code Playgroud)

断点和该块中的代码有效!

有任何想法吗?

Kir*_*ill 5

是答案.如果短:

  • 在解决方案资源管理器中,右键单击该页面,然后从上下文菜单中选择"查看组件设计器"
  • 打开属性面板/窗口(按F4)
  • 现在单击黄色箭头/ flash图标,您将看到所有页面事件的列表
  • 双击要为其添加处理程序的事件

UPDATE

是的,你是对的,它没有按预期工作.很抱歉发布答案时没有真正检查它是否有效.我不知道如何解决它,但我至少找到了解释.

除了你提到的方法,它还增加了类似的东西

private void InitializeComponent()
        {
            this.PreInit += new System.EventHandler(this._Default_PreInit);
        }
Run Code Online (Sandbox Code Playgroud)

它来自旧的设计/编译模型.MS在ASP.NET 2.0中更改默认设计/编译模型后,默认情况下AutoEventWireup设置为true,指示编译器使用命名约定(对于页面事件)自动从文件后面/旁边的代码附加事件处理程序,例如

protected void Page_Load(...)
{
}
Run Code Online (Sandbox Code Playgroud)

在幕后自动附加:

this.Load += new EventHandler(this.Page_Load)
Run Code Online (Sandbox Code Playgroud)

显然,Visual Studio 2010的相应行为并未根据这些更改进行更改,并且仍然按照旧的命名约定创建事件处理程序并添加委托附加方法,这是不必要的.