对于Datagrid的键盘事件响应,我们一定要分辨清楚是Datagrid自身的,还是cell单元格的键盘事件响应,处理方法是有很大区别的。大家可以参考第一篇的方法,对cell中的键盘事件进行处理。
但有个问题上一节没有交待,就是如何对Enter键、方向键、Tab键、Pgup/PgDn这些虚键进行拦截与处理?一般网友遇到这个问题,十有八九是出于这个目的:就是希望按Enter键时使光标在一行中向右一个格一个格跳(从“name”到“123”),而不是立即跳向同一列的下一行(到“xxx”)。(如图1所示)
图1 跳格演示
但是,我们在上一篇中用尽方法也截不下Enter键呀,看来这一键盘响应已经被控件封装为protected型了。控件编写人员把多个预定义的键盘绑定方案封装起来,称为快捷键。我们在Keydown/KeyPress中没办法拦截到Enter键和其它一些键盘按键正是这个原因,下面罗列的就是隐藏起来的快捷键:
操作 |
快捷键 |
完成单元格输入并向下移动到下一个单元格。 如果焦点在子表链接上,则导航至该表。 |
ENTER 键 |
如果处于单元格编辑模式,则取消单元格编辑。 如果处于字幕选择模式,则取消在行上的编辑。 |
ESC 键 |
当编辑单元格时,删除插入点前的字符。 |
BACKSPACE 键 |
当编辑单元格时,删除插入点后的字符。 |
DELETE 键 |
移动到当前行的第一个单元格。 |
HOME 键 |
移动到当前行的最后一个单元格。 |