我是要做系统界面,单机版的,输入法是搜狗,应该怎么办
追答在.net 中,WinForm和WPF做的单机界面的确都可以控制输入法开关。但输入法本身就可以输入非汉字的特殊字符,所以你这个目标不可能通过“控制输入法”来实现。
★☆
上面这俩字符是用五笔输入法打出来的(极点五笔,五笔码是:zzts),你无法禁止输入法产生这样的两个字符。即使是搜狗输入法应该也是可以自定义特殊字符的编码的——所以你还是无法通过“控制输入法”这个办法来阻止特殊字符的产生。
====================
所以如前所述:不如在输入后再添加验证,迫使用户只能输入汉字或英文字母,如果用户输入的文本中有非法字符,就迫使插入点停在此输入框中,并提示用户不能使用特殊字符。
或者可以在整个窗口的数据都被用户填写好后,在用户提交时(例如用户点击某个“确定”按钮)判断各输入框中的文本是否合乎规则,如果不合规则,就提示用户修改。
至于验证逻辑,英文好办,直接判断字符char是否(>=a且=A且<=Z)。但汉字就比较复杂,需要查一下Unicode编码表,找到第一个汉字和最后一个汉字字符的unicode编码。
====================
关于验证可以参考MSDN中这篇文章《Windows 窗体中的用户输入验证》。
或者也可以参考这里的一些文章,里面有些图,比较直观:
http://msdn.microsoft.com/zh-cn/library/ms951069.aspx
=====================
如果一定要在输入时想办法,还可以试试MaskedTextBox 这个增强型控件(这是个WinForm控件)是否能满足要求。这个控件也可以自定义一些规则,不合规则的字符无法输入——这比控制输入法更有效。