c#中如何限定输入框中内容只能是汉字和英文字母

如题所述

第1个回答  2011-03-28
第一个中文输入法。当你点到百度对话框的时候,需要重新开启中文输入法才行。不是说开WORD会出现自动的中文输入法,点到百度搜索栏就也会自动有中文输入法的。
第2个回答  2011-03-28
控制输入法貌似比较难,网页编程、WinForm、WPF的处理方式又各不一样。还得考虑用户安装了多种输入法的情况。
我一直没搞明白Access中这样的效果是怎么做到的。

所以“在输入后进行验证,然后弹出个消息框提示用户修改”——这个法子似乎还简单一点。追问

我是要做系统界面,单机版的,输入法是搜狗,应该怎么办

追答

在.net 中,WinForm和WPF做的单机界面的确都可以控制输入法开关。但输入法本身就可以输入非汉字的特殊字符,所以你这个目标不可能通过“控制输入法”来实现。

★☆

上面这俩字符是用五笔输入法打出来的(极点五笔,五笔码是:zzts),你无法禁止输入法产生这样的两个字符。即使是搜狗输入法应该也是可以自定义特殊字符的编码的——所以你还是无法通过“控制输入法”这个办法来阻止特殊字符的产生。
====================
所以如前所述:不如在输入后再添加验证,迫使用户只能输入汉字或英文字母,如果用户输入的文本中有非法字符,就迫使插入点停在此输入框中,并提示用户不能使用特殊字符。
或者可以在整个窗口的数据都被用户填写好后,在用户提交时(例如用户点击某个“确定”按钮)判断各输入框中的文本是否合乎规则,如果不合规则,就提示用户修改。

至于验证逻辑,英文好办,直接判断字符char是否(>=a且=A且<=Z)。但汉字就比较复杂,需要查一下Unicode编码表,找到第一个汉字和最后一个汉字字符的unicode编码。
====================
关于验证可以参考MSDN中这篇文章《Windows 窗体中的用户输入验证》。
或者也可以参考这里的一些文章,里面有些图,比较直观:
http://msdn.microsoft.com/zh-cn/library/ms951069.aspx

=====================
如果一定要在输入时想办法,还可以试试MaskedTextBox 这个增强型控件(这是个WinForm控件)是否能满足要求。这个控件也可以自定义一些规则,不合规则的字符无法输入——这比控制输入法更有效。

本回答被提问者采纳
相似回答