问题描述
编了个小程序,数据员输入时有时输入为全角,有时半角,汇总时老是出错。怎么能强制输入时为半角。谢谢大家。本人菜鸟。望解答。
解决方案
解决方案二:
IME设置为Off
解决方案三:
ime-mode=disabled
解决方案四:
#Region"全角半角转换"'''<summary>'''转全角的函数(SBCcase)'''</summary>'''<paramname="input">任意字符串</param>'''<returns>全角字符串</returns>'''<remarks>'''全角空格为12288,半角空格为32'''其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248'''</remarks>PublicSharedFunctionToSBC(inputAsString)AsString'半角转全角:DimcAsChar()=input.ToCharArray()ForiAsInteger=0Toc.Length-1IfAscW(c(i))=32Thenc(i)=ChrW(12288)ContinueForEndIfIfAscW(c(i))<127Thenc(i)=ChrW(AscW(c(i))+65248)EndIfNextReturnNewString(c)EndFunction'''<summary>转半角的函数(DBCcase)</summary>'''<paramname="input">任意字符串</param>'''<returns>半角字符串</returns>'''<remarks>'''全角空格为12288,半角空格为32'''其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248'''</remarks>PublicSharedFunctionToDBC(inputAsString)AsStringDimcAsChar()=input.ToCharArray()ForiAsInteger=0Toc.Length-1IfAscW(c(i))=12288Thenc(i)=ChrW(32)ContinueForEndIfIfAscW(c(i))>65280AndAlsoAscW(c(i))<65375Thenc(i)=ChrW(AscW(c(i))-65248)EndIfNextReturnNewString(c)EndFunction#EndRegion
在TextChanged时转换一下或最后保存是转换一下
解决方案五:
引用1楼wuyazhe的回复:
IME设置为Off
我来学习
解决方案六:
可以将输入控件的ImeMode属性的值修改为Disable。ImeMode属性是对当前控件得到焦点后对输入法的限制。
解决方案七:
用IMEMODE属性设置一下,就好了
解决方案八:
在TextBox的OnFocus事件里,加上ime-mode=disabled就可以了
解决方案九:
ime-mode=disabled可以屏蔽键盘输入,但是ctrl+v还是不行的。建议你如果可以在后面的其他事件(比如光标离开,按钮按下)的时候可以check的话,就允许输入,然后再其他事件里面判断如果一定要限制输入,可以用PrivateConstWM_CHARAsInteger=&H102PrivateConstWM_PASTEAsInteger=&H302PrivateConstWP_PASTEAsInteger=22ProtectedOverridesSubWndProc(ByRefmAsSystem.Windows.Forms.Message)Ifm.Msg=WM_CHARAndAlsoCInt(m.WParam)<>BACKAndAlsoCInt(m.WParam)<>WP_PASTEThen'手动输入ElseIfm.Msg=WM_PASTEThen'粘贴EndIf
然后再判断。不过这个api是不能debug的
解决方案十:
晕上面漏了一点。。。PrivateConstWM_CHARAsInteger=&H102PrivateConstWM_PASTEAsInteger=&H302PrivateConstWP_PASTEAsInteger=22ProtectedOverridesSubWndProc(ByRefmAsSystem.Windows.Forms.Message)Ifm.Msg=WM_CHARAndAlsoCInt(m.WParam)<>BACKAndAlsoCInt(m.WParam)<>WP_PASTEThen'手动输入ElseIfm.Msg=WM_PASTEThen'粘贴EndIf'执行原事件MyBase.WndProc(m)EndSub
解决方案十一:
呃,还是漏了一个常量定义PrivateConstBACKAsInteger=8
解决方案十二:
好强大呀!