在WinForm中屏蔽中文输入法2011-08-29 博客园 万仓一黍在WinForm的开发中,有时有些特殊的要求。例如:在某个Form上彻底屏蔽中 文输入法,使之不能切换到中文输入,不能进行中文输入。这个问题看上去简单,实现起来并没有想象中的简单。下面,把我做的几个实 验依次列举,就会发现,其实实现起来还是有一定难度的。实验一:1、新建项目,建立两个Form,分别为Form1、Form2。Form1为启动Form。2、Form1上有一个TextBox和Button。点击Button,执行下面语句Me.Hide()Form2.Show()3、Form2上有一个TextBox,TextBox的ImeMode属性设为close,意思为关闭输 入法模式。在Form2的FormClosed事件中执行下面语句。Form1.Show()好,现在来测试这个实验。嗯,很不幸,在Form2中TextBox中很顺利的切换了 中文输入法,输入了中文。试验失败。实验二:继续实验一,找了相关的资料,发现有一个InputLanguageChanging事件,似 乎可以控制输入法的切换。4、在Form2的TextBox的InputLanguageChanging事件中添加如下代码e.Cancel = True来测试一下。貌似试验成功了,按照实验一的测试,在Form2中TextBox已经不 能切换输入法了。为何是貌似呢?我们再重新测试一番,就有问题了。先在Form1中的TextBox中切换成中文输入法。然后点击Button,切换到Form2 ,你再Ctrl+Space,发现在Form2中的TextBox里出现了熟悉的中文输入法。呵呵 ,实验二不能算成功的。分析实验二为何不能成功。我想关键就是在切换到Form2之前,我就已经切换 成中文输入法。那如果在切换Form2之前就把输入法钉死在系统的默认输入法如何 ?