下面有这么一个例子:
public partial class Default7 : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
this.Button1.Click += delegate { Response.Write(1 + "<br>"); };
base.OnInit(e);
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(2 + "<br>");
}
}
得到的结果是
2
1
为什么不是先执行匿名函数,而是先执行Resopnse.Write(2+"<br>");为什么结果不是
1
2
呢?
public partial class Default7 : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
this.Button1.Click += delegate { Response.Write(1 + "<br>"); };
base.OnInit(e);
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(2 + "<br>");
}
}
得到的结果是
2
1
为什么不是先执行匿名函数,而是先执行Resopnse.Write(2+"<br>");为什么结果不是
1
2
呢?
解决方案 »
- 控件到底是用好还是不用好?
- 在有iframe的情况下,页面跳转变成框架跳转,看看啥原因
- ODBC配置中SQL SERVER 与SQL NATIVE CLIENT的区别是什么?
- asp.net 搜索
- 如果一个文件夹中就一个文件,怎么取得这个文件的文件名?并判断是不是.doc文件
- 取IP问题
- 怎样将绑定好的dropdownlist中的某项打开页面时就选定上?
- vs2008和vss2005兼容问题
- !!有谁遇到了这个问题(ASP。NET),大家看看,顺便放假结束散分
- 如何在ArrayList中显示数据库中值?
- 谁有dotLucene做的数据库检索和中文分词的例子呢,可以参考一下吗?
- 关于gridview 的数据绑定问题
{
this.Button1.Click += delegate { Response.Write(1 + "<br>"); };
base.OnInit(e);
}
是在页面生成的时候发生。
------------
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(2 + "<br>");
}他的定义是在类构造的时候就生成了,我的想法是winform不知道webform是不是这样,不过应该差不多
同时由于是服务器事件,
页面刷新OnInit()1
OnLoad()
OnInit->Button1_Click->delegate{Response.Write(1 + "<br>"); }
每次Click都会为Button1重新添加委托,也就是说第一次加载时的那个委托并不保存,而只是将该事件添加到Button1的响应队列里,优先级应该在Button1_Click之后
//初始化页面时执行
protected void Button1_Click(object sender, EventArgs e)
//双击后才执行
C#的运行机制可能是先执行点击事件然后再执行页面加载事件。。