C# 切换中英文输入法

news/2024/10/18 16:54:35/

C# 切换中英文输入法

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

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

InputLanguage方案

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

  • 获取当前输入法

    /// <summary>/// 获取当前输入法/// </summary>/// <returns></returns>private string GetCultureType(){var currentInputLanguage = InputLanguage.CurrentInputLanguage;var cultureInfo = currentInputLanguage.Culture;//同 cultureInfo.IetfLanguageTag;return cultureInfo.Name;}
  • 切换输入法

    /// <summary>/// 切换输入法/// </summary>/// <param name="cultureType">语言项,如zh-CN,en-US</param>private void SwitchToLanguageMode(string cultureType){var installedInputLanguages = InputLanguage.InstalledInputLanguages;if (installedInputLanguages.Cast<InputLanguage>().Any(i => i.Culture.Name == cultureType)){InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(System.Globalization.CultureInfo.GetCultureInfo(cultureType));CurrentLanguage = cultureType;}}

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

InputMethod附加属性

System.Windows.Input.InputMethodAPI原文给的注释是:

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

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

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

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

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

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

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

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

ImeConversionModeValues枚举值列表如下:

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

以上俩方案的Demo源码[2]:

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

参考[3]

参考资料

[1]

System.Windows.Forms.InputLanguage: https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.inputlanguage?view=netframework-4.7.2

[2]

Demo源码: https://github.com/Kybs0/InputLanguageTestDemo

[3]

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


http://www.ppmy.cn/news/123249.html

相关文章

韩文T9宫格输入法的实现

工作中有幸接触到了韩文显示和韩文输入法法&#xff0c;然而对于不懂韩文的我来说&#xff0c;要我写输入法真的是非常的困难&#xff0c;百度一点有用的资料都没有&#xff0c;翻墙去谷歌搜索也没有&#xff0c;最后可以提供了一个文档&#xff0c;这个文档是非常的有用的&…

【Ubuntu22.04.2中文系统转换,添加中文输入法,修改快捷键】

上一篇带大家完成了Ubuntu的安装&#xff0c;现在来看看答应大家的后续吧 好多人安装Ubuntu后发现是英文&#xff0c;找不到怎么切换中文系统和中文输入法&#xff0c;今天本多就带大家来看看吧&#xff08;看完哦&#xff0c;最后面有快捷键设置&#xff09; 中文系统转换 点…

kali安装中文输入法(搜狗输入法)

&#xff08;创作不易&#xff0c;记得点个赞哦&#xff09; kali Linux并不自带中文输入法&#xff0c;下面提供安装搜狗输入法的简单教程。 1.登录搜狗官网&#xff0c;找到搜狗输入法Linux版的下载页面。搜狗输入法linux-首页搜狗输入法for linux—支持全拼、简拼、模糊音…

ubuntu下安装韩语输入法

在命令行下输入如下命令&#xff1a; $ sudo apt-get install ibus-hangul 然后在ibus的设置中选择Korean输入法即可。

韩语音译收集

爸爸&#xff1a;啊爸&#xff08;几&#xff09; 妈妈&#xff1a;哦妈&#xff08;泥&#xff09; 哥哥&#xff08;女生叫的&#xff09;&#xff1a;哦爸 哥哥&#xff08;男生叫的&#xff09;&#xff1a;hiang 奶奶&#xff1a;哈拉不你 爷爷&#xff1a;哈拉不几 姐姐&…

韩语输入法快捷键

装上了韩语输入法后&#xff0c;默认是A&#xff0c;要点击A才能转为가 &#xff0c;不想点击鼠标&#xff0c;快捷键为右边的alt任一边的shift

韩语输入法,了解一下

韩语输入法&#xff0c;了解一下 韩语输入法&#xff0c;了解一下 一、韩语输入法&#xff1f;二、hangulIME库三、Demo 1、创建Qt项目2、加载库文件3、使用韩语输入4、总结 一、韩语输入法&#xff1f; 少啰嗦&#xff0c;先上图 这和Win7系统的韩语输入法效果几乎一样。…

韩语拼音输入法

1、网页输入 韩语输入法的键盘和通用键盘罗马音并不对应&#xff0c;而是像五笔一样输入&#xff0c;这样输入的时候还要记忆键盘字根布局&#xff0c;很不方便. 所以&#xff0c;我做了一个韩语拼音输入法。 CSDN不支持JavaScript&#xff0c;请看我cnblog链接&#xff1a;…