ComboBox 强制转换为大写的方法
最近遇到如何將輸入在組合框(ComboBox)中的英文字符轉換為大寫的問題。
在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 都不能捕獲。
轉載于:https://www.cnblogs.com/kingsleylam/archive/2013/03/11/2954883.html
總結
以上是生活随笔為你收集整理的ComboBox 强制转换为大写的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iPad或全系取消耳机孔:经典要成绝唱了
- 下一篇: 10万级两厢轿车彻底无敌手!比亚迪海豚7