使用 VS.NET 2005 真是窝火——在“设计”视图中无法选择页面,也就不能自动生成页面事件代码

cityhunter172 2006-10-26 10:49:57
在 VS.NET 2003 有以下方法设置页面的事件,比如 Page_PreRender 事件
1、在“设计”视图,右键页面空白处 → 属性 → 点击“事件”图标 → 双击 PreRender
2、在 .cs 代码中展开 InitializeComponent() ,填写代码,按 Tab 键就能完成
this.PreRender += new System.EventHandler(this.Page_PreRender);

哪们高手知道怎样才能在 VS.NET 中找到 InitializeComponent() 事件中的代码,或是如何设置才能自动生成上述代码?
难不成真要我每次手动把 Page_PreRender 方法写全了才行???

我在 MSDN 2005 中找到以下说明:
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_vwdcon/html/97d1679d-459a-4244-8323-1922373fa857.htm

在“属性”窗口中创建事件处理程序
在“设计”视图中,选择要创建其事件处理程序的控件。

注意
在“设计”视图中无法选择页面,因此无法使用此过程创建页面事件。请改用前面的过程。
...全文
584 27 打赏 收藏 举报
写回复
27 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
winner2050 2006-10-31
  • 打赏
  • 举报
回复
web项目生成DLL不是一般的垃圾。

事件的改进我很喜欢,起码没有事件丢失发生了。
effun 2006-10-31
  • 打赏
  • 举报
回复
至于Page的事件, 直接重载就行了, 反正我是这样做的.
effun 2006-10-31
  • 打赏
  • 举报
回复
asp.net 2.0中不再使用InitializeComponent了, 取而代之的是直接在ASPX文件里写.

<asp:Button id="button1" runat="server" text="Click Me" onclick="button1_Click" />
bumite 2006-10-31
  • 打赏
  • 举报
回复
正在用这个啊,觉得比03好多了,很方便,03倒觉得不好用了,呵呵
HJS1820 2006-10-31
  • 打赏
  • 举报
回复
還沒有用2005
路過
  • 打赏
  • 举报
回复
不错,又学习了一招,谢谢!
  • 打赏
  • 举报
回复
在asp.net1.1中,页面对象首先创建各个控件对象,然后在所有控件创建之后统一调用CodeBehind类(页面的真实对象的类型的父类)中定义的InitializeComponent,此时给各个控件注册了事件处理方法。

但是在asp.net2.0中,页面对象在创建各个对象的时候就各自直接注册了事件处理方法(各方法是从CodeBehind的那个类继承的页面真实类型中获得的),而删除了InitializeComponent了。
  • 打赏
  • 举报
回复
对于页面的事件,注册在页面的初始化方法里,并且c#的事件注册方法还算挺够自动化的(使用TAB键),我倒是觉得比在页面属性窗口里查找事件不差什么。
  • 打赏
  • 举报
回复
对于页面的事件,注册在这里:

public _Default()
{
this.PreRender += new EventHandler(_Default_PreRender);
}

控件的事件,使用属性窗口生成,这样它将在真实的页面类型中注册,而不是codebehind类中注册。而在asp.net1.1使用的InitializeComponent请不要再去找它了(本来1.1中就在源代码中说明不应该手动修改),即使找到了,下一次asp.net升级也许又被废弃了。
Ivony 2006-10-30
  • 打赏
  • 举报
回复
方法一:
Copy Page_Load的声明,改个名字。

方法二:
override Pre,这个时候就应该已经出来了。
daishengs 2006-10-30
  • 打赏
  • 举报
回复
确实让人感到相当不便。
cityhunter172 2006-10-30
  • 打赏
  • 举报
回复
感谢各位的关注。
我用了一种比较“笨”的方法——
随便在一个地方手动完成下列编码(使用 Tab 自动完成)

this.InitComplete += new EventHandler(Login_InitComplete);


void Login_InitComplete(object sender, EventArgs e)
{
throw new Exception("The method or operation is not implemented.");
}

然后删除语句 this.InitComplete += new EventHandler(Login_InitComplete);
再把 Login_InitComplete 改成 Page_InitComplete

办法是人想出来滴!!!!
___________________________________________

特别感谢 Eddie005(♂) №.零零伍 (♂)
经过你的指点,我已修改此模板,再也不用天天往 Page_Load 中增加 IsPostBack 了
if (IsPostBack) { return; }
qltouming 2006-10-27
  • 打赏
  • 举报
回复
回复人:cityhunter172(寒羽枫) ( 一星(中级)) 信誉:100 2006-10-27 09:44:00 得分:0
?
我曾在一个网友的 VS.NET 2005 中看到过在 .aspx 下有两个关联文件,一个是 .cs ,一个是设计文件。为什么我的只有一个 .cs 文件呢,敬请各位能人解答,谢谢!!!
--------------------------------------------------
VS2005的WinForm在资源管理器中是这样显示的,但实际上它还是两个文件。你去看文件夹中的真实文件就看到了两个。
在资源管理器中要看到页面的设计界面的话,直接双击那个.cs窗体就可以了,看代码的话就是“查看代码”。
Eddie005 2006-10-27
  • 打赏
  • 举报
回复
lengjianyang(阿冷)的问题个人认为只是你不习惯或者不会用GridView而已,如果你觉得DataGrid比较好用的话在vs2005里还是可以继续使用它的:“工具”-〉“选择工具箱工具”,把旧版的DataGrid加系统好了~
Eddie005 2006-10-27
  • 打赏
  • 举报
回复
1)这确实让人感到相当不便,只能自己写;但是如果经常需要用到某个Page的事件的话我们可以改一下新页面模版,这就不至于每次新建页面都写一下

2)vs2005中的winform窗体会有两个关联文件,一个form1.cs,另一个是设计文件(包含自动生成的代码,用分部类实现),但没听说webform也会如此~
lengjianyang 2006-10-27
  • 打赏
  • 举报
回复
而且使用在2003中的datagrid,在2005中叫geidview的在属性中没有属性生成器,它的分页也存在问题,经常分不了页。
股神 2006-10-27
  • 打赏
  • 举报
回复
cityhunter172 2006-10-27
  • 打赏
  • 举报
回复
我曾在一个网友的 VS.NET 2005 中看到过在 .aspx 下有两个关联文件,一个是 .cs ,一个是设计文件。为什么我的只有一个 .cs 文件呢,敬请各位能人解答,谢谢!!!
Eddie005 2006-10-27
  • 打赏
  • 举报
回复
补充一下刚才这个:

1)....改一下新页面模版,文件在
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplatesCache\Web\CSharp\2052\WebForm.zip\CodeBeside.cs
myminimouse 2006-10-27
  • 打赏
  • 举报
回复
cityhunter172(寒羽枫) ( ) 信誉:100 Blog 2006-10-27 09:44:00 得分: 0


我曾在一个网友的 VS.NET 2005 中看到过在 .aspx 下有两个关联文件,一个是 .cs ,一个是设计文件。为什么我的只有一个 .cs 文件呢,敬请各位能人解答,谢谢!!!


.aspx?不会吧



加载更多回复(7)
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-26 10:49
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。