ComboBox 强制转换为大写的方法
2015-12-21 19:05
274 查看
最近遇到如何将输入在组合框(ComboBox)中的英文字符转换为大写的问题。
在TextBox中,有CharacterCasing属性,直接设置为Upper即可。但是在ComboBox中没有此属性,所以要另找其他方法。
直觉告诉我,一定是在KeyDown, KeyPress, KeyUp这三个事件中找到突破口,研究下去果然如此。
三者触发的前后顺序如上所示,KeyDown和KeyPress,字符接收,未赋值到文本框里,而KeyUp的时候已经赋值了,所以应该从前两者入手。
KeyDown里,提供有KeyValue, KeyData, KeyCode,第一个是整型数,后两个返回Keys 枚举类型。且三者都是只读属性,无法修改。
KeyPress里,提供有KeyChar属性,这是个可读写属性,储存的是按下的字符。那么将其修改,在赋值前转换成大写,是否就可以了呢?
事实证明,当然是可以的啦不然我也不会写这博客啦。
注意,这里处理的是单独字符的问题,如果是组合键的话,需要其他方法。
// 20130419 修改代码段,于公司源代码看到前辈如此简洁,泪流满面
下面就是找到的一些资料,随便看看呗。
KeyPress 和KeyDown 、KeyPress之间的区别
1、KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符
2、KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键)
3、KeyPress 只能捕获单个字符
4、KeyDown 和KeyUp 可以捕获组合键。
5、KeyPress 可以捕获单个字符的大小写
6、KeyDown和KeyUp 对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写。
7、KeyPress 不区分小键盘和主键盘的数字字符。
8、KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。
9、其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。
在TextBox中,有CharacterCasing属性,直接设置为Upper即可。但是在ComboBox中没有此属性,所以要另找其他方法。
直觉告诉我,一定是在KeyDown, KeyPress, KeyUp这三个事件中找到突破口,研究下去果然如此。
三者触发的前后顺序如上所示,KeyDown和KeyPress,字符接收,未赋值到文本框里,而KeyUp的时候已经赋值了,所以应该从前两者入手。
KeyDown里,提供有KeyValue, KeyData, KeyCode,第一个是整型数,后两个返回Keys 枚举类型。且三者都是只读属性,无法修改。
KeyPress里,提供有KeyChar属性,这是个可读写属性,储存的是按下的字符。那么将其修改,在赋值前转换成大写,是否就可以了呢?
事实证明,当然是可以的啦不然我也不会写这博客啦。
1 private void cbTest_KeyPress(object sender, KeyPressEventArgs e) 2 { 3 e.KeyChar = (e.KeyChar.ToString().ToUpper().ToCharArray())[0]; 4 }
注意,这里处理的是单独字符的问题,如果是组合键的话,需要其他方法。
// 20130419 修改代码段,于公司源代码看到前辈如此简洁,泪流满面
1 private void cbTest_KeyPress(object sender, KeyPressEventArgs e) 2 { 3 e.KeyChar = char.ToUpper(e.KeyChar); 4 }
下面就是找到的一些资料,随便看看呗。
KeyPress 和KeyDown 、KeyPress之间的区别
1、KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符
2、KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键)
3、KeyPress 只能捕获单个字符
4、KeyDown 和KeyUp 可以捕获组合键。
5、KeyPress 可以捕获单个字符的大小写
6、KeyDown和KeyUp 对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写。
7、KeyPress 不区分小键盘和主键盘的数字字符。
8、KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。
9、其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。
相关文章推荐
- 密码存储相关总结
- Linux下Tomcat重新启动
- easyui中ajax笔记
- POJ3176 DP水题
- cin>>i的返回值的问题 & cin输入流
- Cocos2d-x Layout简单使用
- LeetCode 234:Palindrome Linked List
- javascript 将xml字符串转换成json对象
- 协议 Protocol 的使用
- 国嵌视频光盘及源码网盘下载地址-续
- wchar和char的了解以及相互转化
- JAVA timer的基本知识
- PHP 使用telent测试HTTP
- STL之二分查找 (Binary search in STL)
- C#基础笔记
- java设计模式--六大设计原则
- 在iOS7中修改状态栏字体的颜色
- 多层级Spinner列表选项实时更新树形层级(选择城市)
- Apple Watch Human Interface Guidelines (Watch 人机交互指南) (官方文档翻译)
- oc 学习(3) 字符串方法