NET中,对于输入法的控制是比较鸡肋的一个功能,经常不能达到精确控制。

在XP中,使用以下代码 ,可以记录用户最后切换 的输入法,在某些特定的位置关闭输入法以免输入错误的全角数字及其它中文输入法下的问题。

但在WIN7中内置了两个拼音输入法,这两个输入法很奇怪,会和英文输入法混为一体,在这三种输入法中切换,不会引发InputLanguageChanged。

处于拼音输入法时,使用InputLanguage.CurrentInputLanguage = null 或InputLanguage.CurrentInputLanguage = DefaultInputLanguage,都不能使用输入法变成英文输入法。而且这两个输入法也不会出现 在InstalledInputLanguages 中。

我想,应该是微软天真的认为所有人都会用这两个输入法,永远不用切换输入法,而且可以完美的和IMEMODE结合在一起。不得已,在WIN7中添加了一行,强行对IMEMODE进行切换。虽然不能切换输入法,但可以关闭拼音输入法的中文输入状态。

当然,最好的办法还是不要使用这个拼音输入法。搜狗拼音会比它们好得多。

int imeIndex = 0;
        protected virtual void IMEControl(DataGridViewColumn col)
        {
            //不是默认输入法即认为是切换了输入法
            if (col.Index<2)
            {
                if (InputLanguage.CurrentInputLanguage != null && InputLanguage.CurrentInputLanguage.GetHashCode() != InputLanguage.DefaultInputLanguage.GetHashCode())
                {
                    imeIndex = InputLanguage.InstalledInputLanguages.IndexOf(InputLanguage.CurrentInputLanguage);
                }
                if (InputLanguage.InstalledInputLanguages.Count > imeIndex)
                    InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages[imeIndex];
                else
                    InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage;
                //dataGridView1.ImeMode = System.Windows.Forms.ImeMode.On ;
            }
            else
            {
                if (InputLanguage.CurrentInputLanguage != null && InputLanguage.CurrentInputLanguage.GetHashCode() != InputLanguage.DefaultInputLanguage.GetHashCode())
                {
                    imeIndex = InputLanguage.InstalledInputLanguages.IndexOf(InputLanguage.CurrentInputLanguage);

}
                InputLanguage.CurrentInputLanguage = null ;
               // dataGridView1.ImeMode = System.Windows.Forms.ImeMode.Off;
            }
        }

WIN7中使用c#控制微软拼音输入法相关推荐

  1. office 2010中自带的 微软拼音输入法2010卸载

    前些日子在CB看到微软拼音输入法2010B1的提取版,就迫不及待地下载下来体验了一下,感觉比07还是有很大的进步,不过习惯有时还是太大,使用过之后又想删除,无奈由于是提取版,完全没办法删除,添加删除程 ...

  2. 如何卸载office2007中自带的微软拼音输入法?

    新装了WIndows7系统,又装了OFFICE2007,却发现微软拼音输法2007怎么也除不掉.上网查,方法很多,不过估计都是不完全的卸载(有的甚至是强行删除,估计会留有后遗症),干脆有人叫它流氓软件 ...

  3. 教你win7下如何删除微软拼音输入法~!

    win7下安装Office 2003以上版本时,会自带微软拼音输入法,无法屏蔽,无法删除. 小妙招:不需要借助第三方软件,也不要在注册表里找,也不要麻烦的去文件夹里去找,可以删掉讨厌的微软拼音输入法. ...

  4. 微软拼音输入法3.0 在 ie 中有MaxLength 的 textbox 框中输入的bug

    今天无聊的时候发现了个bug.在google中的搜索框输入中文,按住a不放,会不断输入汉字"阿".过一段时间会出现如下现象 我去yahoo尝试了一下,发现是正常的.察看源代码,发现 ...

  5. Word2003入门动画教程39:Word中更新微软拼音输入法词典

    Word 2003是微软公司提供的一款文字处理软件,可以对文字进行 排版 和编辑.分段等各种处理,最终将编辑好的内容打印出来,是办公室一族中必备的办公软件之一.在Word中,我们可以把某些专业术语或生 ...

  6. 一个长期潜伏在微软拼音输入法中的Bug

    这个Bug不仅存在于微软拼音输入法2010中,也同样存在于Windows 8自带的微软拼音输入法2012中.更神奇的是,在谷歌拼音输入法V3.0.1.98中也出现了.值得欣慰的是,在百度输入法V2.0 ...

  7. 微软拼音输入法2007状态栏无法显示!

    可能有两种原因导致这种现象出现,如果你的操作系统是Windows XP SP2,那么系统的自启动项里有三项会和"微软拼音输入法2007"冲突.如果你的操作系统不是Windows X ...

  8. [原创]微软拼音输入法2007(含64位版)

    最近装了Windows Server 2003 x64 R2SP2 EE 找遍baidu google没发现64位的微软拼音输入法2007... 无奈之下安装了Office 2007 参考了些网上的资 ...

  9. 双拼输入法键位图_教你在Windows自带的微软拼音输入法中用上小鹤双拼方案

    微软拼音输入法是Windows 10操作系统中自带的输入法,虽然很多人在拿到一个新系统之后就安装一个新的输入法,比如搜狗输入法.手心输入法.但是很多人不知道最新版本的windows操作系统自带的微软拼 ...

最新文章

  1. 贝叶斯岭回归(BayesianRidge)、自动关联决策回归、高斯过程、核函数、及高斯回归、高斯过程分类
  2. pytorch 维度变化的时候应该使用什么方法permute
  3. 三级计算机系统是什么情况,三级PC技术: 计算机的组成和分类
  4. php冒泡程序讲解,PHP冒泡排序程序代码与源代码
  5. Activiti多人会签例子
  6. mysql索引的创建及删除
  7. 二叉树学习笔记之利用前序遍历递归创建二叉树
  8. c++ 文件读写(转)
  9. [JBoss] JNDI与JBossNS
  10. c# 开发项目的过程
  11. Linux线程优先级设置
  12. 查看计算机硬盘序列号的软件,硬盘序列号,手把手教你怎么查看硬盘序列号
  13. matlab瓶盖盖严检查,口服液瓶盖密封性的质量检测方法你知道吗?
  14. 一个医院院长的信息化建设感悟:信息化条件下的流程再造
  15. 罕见霜降胡杨照片,太美了!
  16. Loss和神经网络训练
  17. 改变控制台字体的大小
  18. 浏览器指纹技术与浏览器指纹破解办法
  19. 感冒药盒上请看清这6个字,一定要注意! “美”:支气管炎患者慎用
  20. 华为mate10开机android,华为Mate 10双清教程

热门文章

  1. 用友U8 【项目档案】/【项目目录】报错处理
  2. 台灯色温多少合适?2022双十一色温对眼睛好的护眼台灯推荐
  3. ueditor实现word图片自动转存
  4. .NET应用跨域问题解决方案
  5. CSDN——转载文章
  6. nw.js html5,轻量级桌面应用开发的捷径——nw.js
  7. MySQL——DDL语言
  8. 阿昌手摸手教你如何在服务器部署若依前后端分离版项目
  9. Android-WiFi开发之 WifiManager
  10. DS18B20温度传感器解读单线协议