C# 切换中英文输入法

原文:C# 切换中英文输入法

在界面输入时,有时需要限定输入法。

在不自定义正则表达式或者其它输入处理的情况下,切换中英文时与当前语言栏匹配,有以下的几种系统方案:

InputLanguage方案

使用System.Windows.Forms.InputLanguage,判断/设置当前输入法状态

 1     /// <summary>
 2     /// 获取当前输入法
 3     /// </summary>
 4     /// <returns></returns>
 5     private string GetCultureType()
 6     {
 7         var currentInputLanguage = InputLanguage.CurrentInputLanguage;
 8         var cultureInfo = currentInputLanguage.Culture;
 9         //同 cultureInfo.IetfLanguageTag;
10         return cultureInfo.Name;
11     }
 1     /// <summary>
 2     /// 切换输入法
 3     /// </summary>
 4     /// <param name="cultureType">语言项,如zh-CN,en-US</param>
 5     private void SwitchToLanguageMode(string cultureType)
 6     {
 7         var installedInputLanguages = InputLanguage.InstalledInputLanguages;
 8
 9         if (installedInputLanguages.Cast<InputLanguage>().Any(i => i.Culture.Name == cultureType))
10         {
11             InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.CultureInfo.GetCultureInfo(cultureType));
12             CurrentLanguage = cultureType;
13         }
14     }

通过InputLanguage的设置,可以统一同一进程内的输入法。比如切换成英文输入法后,当前程序周期内一直是英文输入状态。

InputMethod附加属性

System.Windows.Input.InputMethod,API原文给的注释是:

可以提供用于管理和使用文本服务框架,它提供的替换文字,如语音和手写的输入法支持的交互功能

1. InputMethod下有依赖属性PreferredImeConversionMode,可以限定输入字符类型,同时切换语言栏的中英文状态。

-- 此属性设置了限定输入字符后,可以通过人工切换输入法,切换回其它输入法。

2.InputMethod.IsInputMethodEnabled,也可以设置中英文输入法限定

-- 一旦设置了,输入控件的输入法不可人工切换。除非重新设置IsInputMethodEnabled值。

InputMethod适合程序周期内,不同输入框分别有不同输入法的情况。

比如下面俩个文本框的输入法限定:

1     //通过InputMethod.PreferredImeConversionMode附加属性,设置输入框的输入法输入转换模式,即限定输入字符类型
2     InputMethod.SetPreferredImeConversionMode(InputTestTextBox0, ImeConversionModeValues.Alphanumeric);
3     InputMethod.SetPreferredImeConversionMode(InputTestTextBox1, ImeConversionModeValues.Native);

ImeConversionModeValues枚举值列表如下:

 1   /// <summary>描述要执行的一种输入法输入转换模式。</summary>
 2   [Flags]
 3   public enum ImeConversionModeValues
 4   {
 5     /// <summary>输入的法使用本机字符 (平假名、 朝鲜语、 繁体中文) 转换模式。</summary>
 6     Native = 1,
 7     /// <summary>输入的法使用片假名转换模式。</summary>
 8     Katakana = 2,
 9     /// <summary>输入的法使用全形转换模式。</summary>
10     FullShape = 4,
11     /// <summary>输入的法使用罗马字符转换模式。</summary>
12     Roman = 8,
13     /// <summary>输入的法使用字符代码转换模式。</summary>
14     CharCode = 16, // 0x00000010
15     /// <summary>输入的方法不会执行任何输入的转换。</summary>
16     NoConversion = 32, // 0x00000020
17     /// <summary>输入的法使用 EUDC (最终用户定义的字符) 转换模式。</summary>
18     Eudc = 64, // 0x00000040
19     /// <summary>输入的法使用符号转换模式。</summary>
20     Symbol = 128, // 0x00000080
21     /// <summary>输入的法使用固定的转换模式。</summary>
22     Fixed = 256, // 0x00000100
23     /// <summary>输入的法使用字母数字的转换模式。</summary>
24     Alphanumeric = 512, // 0x00000200
25     /// <summary>输入的方法并不关心使用哪种输入的转换方法;实际的转换方法是不确定的。</summary>
26     DoNotCare = -2147483648, // -0x80000000
27   }

以上俩方案的Demo:https://github.com/Kybs0/InputLanguageTestDemo

PS:如果是winform程序,可以直接设置Control.ImeMode属性

详情可参考:https://blog.csdn.net/iluna/article/details/4903479

原文地址:https://www.cnblogs.com/lonelyxmas/p/10597510.html

时间: 2024-11-10 16:53:05

C# 切换中英文输入法的相关文章

萝卜家园Win10系统怎么用Ctrl键来切换中英文输入法

在萝卜家园win10特别版系统中,切换英文输入法是shift+空格键,但是有些用户不喜欢用这样切换方式,那么小编教大家用Ctrl键来切换英文输入法吧! 1.点击"开始菜单",选择"设置"选项.如图1所示 图1 2.在"设置"界面中,点击"时间和语言"图标.如图2所示 图2 3.在"时间和语言"界面中,点击左侧的"区域和语言",在右侧的语言选项下,点击"中文Windows显示语言

Linux19安装并切换中文输入法

说明:针对ubuntu如何安装并切换中文输入法. 步骤: 1.“设置” 2.选择“区域和语言” 3.选择管理“已安装的语言” 4.“添加或删除语言” 5.勾选中文并安装 6.将汉语拖到最上面 7.点击应用到整个系统 8.打开终端并安装中文输入法,命令:sudo apt-get install ibus-pinyin 9.等待下载完成,下载完成后,重启 10.由于默认切换输入法是通过win(也就是super)+空格,所以将输入法切换至汉语拼音模式 11.切换成功后,验证 参考自:https://b

solus 系统 - 切换中文输入法

系统默认使用 ibus 输入法框架. 可以安装 ibus-libpinyin $ sudo eopkg install ibus-libpinyin 安装好之后需要初始化 ibus-setup $ ibus-setup 为各种程序添加不同的启动参数 $ cd /usr/share/defaults/etc/profile.d/ $ sudo vi 70-ibus.sh 在里面添加以下内容 export GTK_IM_MODULE=ibus export XMODIFIERS[email prot

用phpcms切换中英文网页的方法(不用解析二级域名)、phpcms完成pc和手机端切换(同一域名)

AA.phpcms进行双语切换方法(不用解析二级域名) phpcms进行两种语言的切换,有一把部分的人都是进行的二级域名的解析,这样的话可能会有一部分的麻烦,我这里有一种方法可以不用解析二级域名就可以,不过因为是模板所以可能麻烦一点,不过真的是不接触不知道,接触到没有用到的东西就可以进行进一步的学习.作者:悦悦 博客地址:http://www.cnblogs.com/nuanai/ 这里我使用的方法是进行一级栏目的读取,通过不同的一级栏目进行不同的内容调取.只要修改一级栏目的id就可以了,这就需

word无法切换中文输入法的解决方法

问题: 在word编辑文字的时候,莫名其妙地出现只能输入英文字母无法输入中文的现象,输入法状态条也不显示,而输入法是正常的(在其他编辑器中可正常输入汉字) 解决方法如下:word 2003:菜单工具-选项-编辑-不要勾选‘输入法控制处于活动状态’ word 2007:菜单(可以点击word左上角的office标志)右下角-word选项-高级-取消勾选‘输入法控制处于活动状态’-确定,重启office,OK 亲测有用

xcode6 模拟器不能切换中文输入法解决办法

1. Application Region 中选择"中国" 2. Application Language中选择 "Chinese",如果没有,则进入下面页面,添加中文支持.

Vue国际化处理 vue-i18n 以及项目自动切换中英文

1. 环境搭建 命令进入项目目录,执行以下命令安装vue 国际化插件vue-i18n npm install vue-i18n --save 2. 项目增加国际化翻译文件 在项目的src下添加lang文件夹增加中文翻译文件(zh_CN.js)以及英文翻译文件(EN.js),里面分别存储项目中需要翻译的信息. lang文件获取地址 3. 项目引入 在项目的main.js中引入vue-i18n插件,引入对应的翻译文件(zh_CN.js/EN.js)引入并结合Element-UI 国际化. 入下图 4

Linux-ubuntu英文版输入法不能切换中文输入法问题解决办法

1:System Settings中点击Language Support? 2. ? 3. ? 4. ? 5. ? 6. ? 7.注意不要勾选Only Show Current Language ? 原文地址:https://www.cnblogs.com/lovemi93/p/11183340.html

linux环境中英文切换配置以及乱码问题

问题 这几天玩实验室的服务器,默认语言是中文的,有时候是挺不方便的,比如遇见一个比较复杂的问题,提示的信息是中文的,但是百度里根本没有好的资料,只能google,但是难道让我google搜中午么. 因此就想把自己的环境还原成英文的. 基础配置 本质就是修改系统的LANG变量 LANG是language的简称,稍微有英语基础的用户一看就看出来这个变量是决定系统的默认语言的,即系统的菜单.程序的工具栏语言.输入法默 认语言等. 配置自己的LANG 如果你希望修改整个系统的编码和语言信息,可以修改系统