我正在对我的项目(ASP.NET Web Forms)进行一些研究,并且遇到了两个看似相似的事件类型,OnCommand和OnClick.我已经阅读了MSDN页面,但我仍然不清楚它们之间的差异.
OnCommand与OnClick之间有什么区别?我什么时候想要使用哪个事件?
//编辑以指定应用类型
如果您发现文档有点不清楚,那是可以理解的.
会发生什么事情是OnClick
比较低级别的事件OnCommand
.你可以认为OnClick
它更像是一个物理事件,OnCommand
更像是一个逻辑事件,可以这么说.
单击控件时,它会收到一个OnClick
事件,告知控件已发生单击.控件可以做各种事情作为回应.如果控件与命令相关联,并且如果允许对事件进行默认处理,则系统将跟随此OnCommand
事件.
(我不确定/不记得你对WinForms中的默认处理的抑制有多少控制,但你当然可以在底层的Win32编程层中控制它.)
该OnCommand
事件可能是由除点击之外的其他手段来触发.例如,您可以使用键盘快捷键来激活控件,在这种情况下将没有OnClick
.
从这一切带回家的知识如下:
当OnCommand足够时,永远不要使用OnClick.
如果编写OnClick
用于触发业务逻辑操作的程序,则程序将要求用户使用鼠标.有许多用户由于残疾而无法使用鼠标,有许多用户只是喜欢键盘而不是鼠标,而且有许多设备甚至没有鼠标.
(在这些设备上,通常会通过触摸来模拟点击,但这并不能保证,并且无论如何所有这些笨重的模拟首先应该是必要的,添加它们的唯一原因是因为程序员在第一名,他们正在做一些愚蠢的事情,比如触发行动,OnClick
而不是OnCommand
.)
OnClick
如果您正在编写自己的控件,那么可以使用.例如,如果您正在编写自己的编辑框控件,并且您希望用户能够单击控件中的某个位置以将插入符号放置在该确切位置,那么可以将其作为响应在OnClick
触发事件.但请注意此操作仅用于控件的内部使用,它不会触发控件外部的任何操作.