问个比较底层的问题:Button的OnClick和Click是什么关系?

comszsoft 2008-10-04 05:59:33
现在看《道不远人》一书,突然遇到很多比较底层的问题,这是其中一个:
当我们向Page中添加一个Button的时候,在源码试图窗口它的Click事件代码是这样:OnClick="Button1_Click" ;
用Reflector看了Button里面有这样两段代码:

//这个是虚方法,想问问这个OnClick对应上面的OnClick吗?
protected virtual void OnClick(EventArgs e)
{
EventHandler handler = (EventHandler) base.Events[EventClick];
if (handler != null)
{
handler(this, e);
}
}

[WebSysDescription("Button_OnClick"), WebCategory("Action")]
public event EventHandler Click
{
add
{
base.Events.AddHandler(EventClick, value);
}
remove
{
base.Events.RemoveHandler(EventClick, value);
}
}



越详细越好,谢谢
...全文
354 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
warrior 2008-10-04
  • 打赏
  • 举报
回复
OnClick="Button1_Click"
这里的OnClick与Button类中的OnClick不是一回事。这里的作用是把"Button1_Click"设置为这个Button的Click事件。
Button类中的OnClick是用于触发Click事件的。
hy_lihuan 2008-10-04
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 changjiangzhibin 的回复:]
onClick是方法

Click是事件
[/Quote]
这样理解比较方便吧,2003直接是通过注册委托实现的
comszsoft 2008-10-04
  • 打赏
  • 举报
回复
经各位指点,大概明白了,谢谢,vs让人程序越来越简单,让程序员的脑子也越来越简单了,唉!
changjiangzhibin 2008-10-04
  • 打赏
  • 举报
回复
onClick是方法

Click是事件
sendling 2008-10-04
  • 打赏
  • 举报
回复
mark
wuyi8808 2008-10-04
  • 打赏
  • 举报
回复
OnClick="Button1_Click" ;
这实际上是注册事件,如高歌所说,是在页面设计视图的一种简洁写法


//这个是虚方法,想问问这个OnClick对应上面的OnClick吗?
protected virtual void OnClick(EventArgs e)
{
}
而这是方法。


可以看看MSDN上关于事件和相应的受保护的方法的内容。
fellowcheng 2008-10-04
  • 打赏
  • 举报
回复
protected virtual void OnClick(EventArgs e) 
{
EventHandler handler = (EventHandler) base.Events[EventClick];
if (handler != null)
{
handler(this, e);
}
}


通过handler(this, e)来调用实际的事件函数,也就是你的Button1_Click函数

gui0605 2008-10-04
  • 打赏
  • 举报
回复
建议你用VS2003写一个事件,然后看CS代码就明白了,在2005以后的版本中MS把事件注册的代码隐藏掉了的
紫气东来_999 2008-10-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 amandag 的回复:]
OnClick="Button1_Click"这个是在页面设计视图的一种简洁写法,编译时会生成相对应于注册事件的语法
[/Quote]

mark

不过好象没有区别的。
comszsoft 2008-10-04
  • 打赏
  • 举报
回复
还是没能理解:(
cteddy 2008-10-04
  • 打赏
  • 举报
回复
一个意思
一个是页面写法一个是代码独立写法
高歌解说的很好了
  • 打赏
  • 举报
回复
哈哈,飘过,从来没想过这种问题
JOSHUATSUEI 2008-10-04
  • 打赏
  • 举报
回复
这不是什么“底层问题”,这是解释性脚本语言和服务器语言对一种方式的不同解释,有人认为是“更简单的”解释方法,可以说这是接口的多重实现。
mengxj85 2008-10-04
  • 打赏
  • 举报
回复
学习一下,这个问题之前没想过
amandag 2008-10-04
  • 打赏
  • 举报
回复
OnClick="Button1_Click"这个是在页面设计视图的一种简洁写法,编译时会生成相对应于注册事件的语法

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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

试试用AI创作助手写篇文章吧