c# 检测中英输入法_C# 切换中英文输入法

本文介绍了如何在C#中检测和切换中英文输入法,包括使用InputLanguage和InputMethod两种方法。InputLanguage允许统一进程内的输入法设置,而InputMethod的附加属性可以限定输入字符类型并控制输入法的启用状态。此外,还提到了适用于WinForm程序的Control.ImeMode属性。
摘要由CSDN通过智能技术生成

C# 切换中英文输入法

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

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

InputLanguage方案

1 ///

2 ///获取当前输入法3 ///

4 ///

5 private stringGetCultureType()6 {7 var currentInputLanguage =InputLanguage.CurrentInputLanguage;8 var cultureInfo =currentInputLanguage.Culture;9 //同 cultureInfo.IetfLanguageTag;

10 returncultureInfo.Name;11 }

1 ///

2 ///切换输入法3 ///

4 /// 语言项,如zh-CN,en-US

5 private void SwitchToLanguageMode(stringcultureType)6 {7 var installedInputLanguages =InputLanguage.InstalledInputLanguages;8

9 if (installedInputLanguages.Cast().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 /// 描述要执行的一种输入法输入转换模式。

2 [Flags]3 public enumImeConversionModeValues4 {5 /// 输入的法使用本机字符 (平假名、 朝鲜语、 繁体中文) 转换模式。

6 Native = 1,7 /// 输入的法使用片假名转换模式。

8 Katakana = 2,9 /// 输入的法使用全形转换模式。

10 FullShape = 4,11 /// 输入的法使用罗马字符转换模式。

12 Roman = 8,13 /// 输入的法使用字符代码转换模式。

14 CharCode = 16, //0x00000010

15 /// 输入的方法不会执行任何输入的转换。

16 NoConversion = 32, //0x00000020

17 /// 输入的法使用 EUDC (最终用户定义的字符) 转换模式。

18 Eudc = 64, //0x00000040

19 /// 输入的法使用符号转换模式。

20 Symbol = 128, //0x00000080

21 /// 输入的法使用固定的转换模式。

22 Fixed = 256, //0x00000100

23 /// 输入的法使用字母数字的转换模式。

24 Alphanumeric = 512, //0x00000200

25 /// 输入的方法并不关心使用哪种输入的转换方法;实际的转换方法是不确定的。

26 DoNotCare = -2147483648, //-0x80000000

27 }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值