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)
断点和该块中的代码有效!
有任何想法吗?
这是答案.如果短:
- 在解决方案资源管理器中,右键单击该页面,然后从上下文菜单中选择"查看组件设计器"
- 打开属性面板/窗口(按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的相应行为并未根据这些更改进行更改,并且仍然按照旧的命名约定创建事件处理程序并添加委托附加方法,这是不必要的.