您的位置: 首页 > 技术文档 > 网络编程 > Visual Studio 2010 接受键盘输入技巧
20年来我得到的20条编程经验 回到列表 编程语言的发展趋势及未来方向 I
 Visual Studio 2010 接受键盘输入技巧

作者:bluehearts 时间: 2010-06-28 文档类型:原创 来自:蓝色理想

Visual Studio 2010 接受键盘输入技巧

一个成功的应用系统,总是离不开键盘的输入。也就是说,应用软件需要通过键盘等工具,来与用户进行交互。虽然这是一项基础性的工作,但是其中还是包含了很多技巧。在Visual Studio2010中,总的来说,还是通过处理键盘事件来接受来自键盘的信息。在这里就以Windows窗体为例,谈谈在接受键盘输入时的一些技巧。

一、Keydown事件。

Keydown事件是用户敲击键盘时触发的一个事件。这是一个初始触发事件,即当用户一按键盘时就触发了这个事件。掌握好这个事件的相关内容,是开发人员处理键盘输入的基础。笔者认为,可以从如下几个方面来进行了解。

一是掌握KeyEventArgs参数。简单的说,这个参数指定一个物理键盘按钮。不过随着硬件的升级,其功能已经远远不止这么一个了。如现在键盘上都有组合键的功能。如现在需要在英文小写状态下输入一个大写的字符,则需要使用Shift与任意一个字符的组合键。再如需要输入数字键上面的特殊符合,也需要采用Shift组合键等等。应用软件需要判断用户是否使用了组合键,此时就需要借助这个参数。也就是说,在Visual Studio2010中编写代码时,可能需要使用一个IF语句或者其它类似的语法来判断用户是否采用了组合键。

二是了解Modiiers属性的含义。注意,在这里不能够顾名思义。其实这个属性会跟上面这个参数结合使用。刚才我们讲过,用户可能在输入时会使用组合键。现在的一个问题时,我们常用的组合键有三个,分别为Shift、Ctrl和Alt。不同的组合键与其它键结合,往往起到不同的效果。为此应用程序不仅要知道,用户是否同时按下了多个键,还需要了解,用户按下的是哪个组合键。这个属性就是用来记录用户按下的是以上三个键中的哪一个。在编写代码的时候,可能需要使用Case语句来根据用户的行为在选择不同的操作。

三是DeyDate属性。在Windows操作系统中,可以同时按下Shift、Ctrl和Alt三个键。此时系统会跳出任务管理器。在应用程序开发过程中,用户可能也需要同时按下这三个键来完成特定的任务。此时需要使用的属性就是Keydata属性。通常情况下,开发人员可以使用来自Keys的常数从Keydata属性中提取信息。同时使用And运算符(表示同时按下三个键)将由Keydata返回的数据与Keys中常数进行比较,从而获得有关用户按下键的信息。

了解了这几个参数与属性之后,基本上就掌握了Keydown事件。笔者再次强调一下,Keydows事件是应用程序接受键盘输入的一个必须要经过的环节。开发人员必须要掌握。

二、KeyPress事件。

这个事件也是在用户按下键盘时触发的。不过其触发的顺序比较晚。也就是说,在Keydown事件被成功触发之后,才会触发这个事件。两者之间有先后的顺序。这是掌握这个事件时需要知道的第一个内容。

另外,这个Keypress事件也并不是对所有的键都敏感。一般来说,当用户按的键会产生字符时才会触发这个时间。即当用户按的是键盘上的数字键时不会触发这个事件。而上面提到的第一个事件,则是在任何情况下,只要用户按下了键盘的按钮,就会触发的。不过需要注意的是,有时候当用户按下任意键时,也会触发这个Keypress事件。这就是这两个事件的第二个区别。

在这个事件中,主要使用了一个KeyPressEventArgs参数。简单的说,这个参数主要用来代表所按键的字符代码。因为字符代码对于字符键和组合键的每个组合都是唯一的,为此这个参数的值也是唯一的。例如同样是键盘上的字符A键,在不同的情况下会产生不同的字符代码。如在大写控制键打开与关闭的情况下,当用户按下这个字符A键时,其后台产生的字符代码是不同的。在编写代码的时候,开发人员不用了解到底用户是在什么情况下按下某个按钮的。只需要知道,不同的字符代码代表什么意思。如字符代码65就表示用户同时按下了Shift键与A键。此时在代码中,就需要根据键盘当前的状况来决定后续的行为。如键盘当前处于大写状态下,则表示用户想输入的信息是小写字符a。反之,则表示用户想输入的信息为大写字符A。

最后需要注意的一点是,开发人员在必要的时候,可以取消这个事件。也就是说,即使用户按下了键盘上的按钮,也不触发这个事件。在某些情况下,这个功能还是蛮有用的。如当某帐单据已经审核,不允许再进行任何的更改。或者说,只允许用户通过鼠标来操作,而不允许通过键盘来操作。简单的说,就是需要系统忽略用户的键盘输入,此时就需要使用这种方法。其实实现的手段也很简单,只需要使用Handled属性即可。当将这个属性设置为True时,就会取消Keypress事件。

三、KeyUp事件。

以上两个事件都是用户按下键盘的按钮时触发的事件。注意上面这两个事件并不是同时触发的,而是有先后的顺序。KeyUp事件顾名思义,就是当用户放开输入的键的时候,所触发的一个事件。在这个事件中,也会需要用到KeyCode属性、Modifiers属性和KeyData属性。这几个属性跟上面谈到的几个属性类似,在这就不过多展开了。

四、接受键盘输入时的注意事项。

当应用程序接受键盘输入时,最重要的一点就是需要对用户输入的数据进行合规性审计。也就是说,并不是用户输入什么,应用程序就接受什么。当用户输入数据时,需要对其合法性进行检查。如现在需要用户通过键盘输入一个身份证号码。一般来说身份证号码都会有最大长度的规定。当用户输入的数据超过这个长度时,系统就需要提醒。如可以发出嘟嘟的警报声,并忽略用户后续的输入。

总结了一下,类似的合规性审计主要有以下几种。

首先需要检查的是用户输入的数据有没有超过最大的长度限制。有时候我们可能会不小心按下了某个键,如书本压在键盘上,此时就会输入一长串字符。为了安全起见,就需要对输入的长度进行限制。当超过规定的长度是,需要发出警告。可以以声音、对话框等形式来提醒用户的键盘输入。

其次需要检查的是用户输入的内容。如在某些文本框中,只允许用户输入数字。如邮编、价格等等。在这些文本框中,当用户输入了非数字的数据,如大写字符A,系统会自动忽略掉,并向用户发出警报。一些设计的比较成熟的应用软件,在数字框内根本输入进非数字类型的数据。而有一些比较小的应用软件,则是在保存的时候进行检验。即用户可以输入,但是保存不了。笔者认为,事前控制比事后控制更加的有效。特别是在填写比较复杂的表单的时候。

第三是一些综合性的控制。如现在有一个文本框需要用户输入产品编码,其编码规则是前面三个位字符,后面五位为数字。为了提高数据的准确性,就需要在接受用户输入的时候对其进行验证。如当用户输入第四位内容的时候,如果用户输入的是字符,则会被忽略掉,并向用户发出警告。

总之,在接受用户键盘输入的时候,需要注意两方面的内容。一是在适当的时候接受用户的键盘输入。也就是说需要判断,在哪些情况下忽略用户的键盘输入操作。二是对于用户输入的数据,需要进行合规性审计。虽然在数据库层面也可以进行检验,不过笔者建议,最好还是在用户输入的时候就进行判断。事前控制的效果要好于事后。

欢迎访问微软官网下载相关软件http://www.microsoft.com/zh/cn/default.aspx

出处:蓝色理想
责任编辑:bluehearts

◎进入论坛网络编程版块参加讨论

相关文章 更多相关链接
VS2010 Web项目的jQuery版本升级
VS2010- IntelliTrace(智能跟踪)
Visual Studio 2010是云产品吗?
Visual Studio 2010版本信息介绍
详解 vs2010 中自动执行属性
作者文章 更多作者文章
云计算带来的行业创新与应用
精英汇走进上海交大圆满结束
伦敦奥运和残奥会吉祥物设计
Adobe CS5发布会功能推新
永恒之塔杯CG创意设计大赛颁奖盛典
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
100个黑色名片设计欣赏
MSDN技术资源库改进预览
图标设计欣赏——icondoctor
Web Storage全解析
Photoshop制作音乐网站播放器
解读iPhone平台的设计思路
Web Design广告字体设计技巧
Visual Studio DSL 入门(四)
HTML 5 Video概述
Visual Studio DSL 入门(三)
栏目最新 栏目最新列表
Firefox的Jetpack扩展案例分析
阿里妈妈UED谈CSS Sprites技术
Photoshop中设计绿色时尚Web网站
操作Dom节点实现间歇滚动新闻
浏览器15年历史回顾
如何创建Firefox的Jetpack扩展
全透视:CSS Z-index 属性
用PS 3D工具绘制甜麦圈包装袋
悟道Web标准:让W3C标准兼容终端
悟道WEB标准:统一思想,遵循标准

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文暂时没有评论和评分

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
《Web标准设计》
闪魂-FlashCS4完美入门与案例精粹
Waver_h's华丽世界
Illustrator CS3质感绘画表现技法
《Flash短片轻松学》
《用户体验要素》
《JavaScript语言精粹》
作品集 更多内容

游戏网站 韩超-简历-WEB U 微博皮肤 我的Q-Zone音乐专题的 永艾视觉设计工作室 爱枣报3周年t恤设 世界杯三口同乐壁 世界杯三口同乐壁