C# 切换中英文输入法

本文经原作者授权以原创方式二次分享,欢迎转载、分享。

原文作者:唐宋元明清

原文地址:https://www.cnblogs.com/kybs0/p/10298697.html

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.mzph.cn/news/285665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转].NET 开源项目 Polly 介绍

今天介绍一个 .NET 开源库&#xff1a;Polly&#xff0c;它是支持 .NET Core 的&#xff0c;目前在 GitHub 的 Star 数量已经接近 5 千&#xff0c;它是一个强大且实用的 .NET 库。 Polly 介绍 官方对 Polly 的介绍是这样的&#xff1a; Polly is a .NET resilience and tran…

「 刘一哥GIS」CSDN专业技术博文专栏目录索引

刘一哥GIS 个人简介&#xff1a;刘一哥&#xff0c;多年研究地图学、地理信息系统、遥感、摄影测量和GPS等应用&#xff0c;精通ArcGIS等软件的应用&#xff0c;精通多门编程语言&#xff0c;擅长GIS二次开发和数据库系统开发&#xff0c;具有丰富的行业经验&#xff0c;致力于…

memcached 和 redis 的区别与选择

没有必要过多的关注性能。由于Redis只使用单核&#xff0c;而Memcached可以使用多核&#xff0c;所以在比较上&#xff0c;平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中&#xff0c;Memcached性能要高于Redis&#xff0c;虽然Redis最近也在存储…

C语言试题九十之实现输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 输入一行字…

数据库备份需要注意的

2019独角兽企业重金招聘Python工程师标准>>> 1、PHPMYADMIN无法导出大数据表的 如果你的数据库中有上百个数据表&#xff0c;并且有很多数据表记录都超过了1G&#xff0c;还有很多INNODB数据表&#xff0c;这个时候用PHPMYADMIN导出&#xff0c;你就会发现恢复后可能…

在 .NET 6 中使用 dotnet format 格式化代码

我不得不承认&#xff0c;在 code review 的时候&#xff0c;我花费了很多时间来研究 C# 的代码格式问题&#xff0c;这是没有太大意义的工作&#xff0c;我应该专注于其他事情&#xff0c;而不是观察同事是否忘记格式化代码&#xff0c;或者是使用了其他不同规则的代码编辑器。…

【天工Godwork精品教程】任务一:创建工程(导入相片、编辑相机参数、导入POS)

无人机航测精品专栏链接:《无人机航空摄影测量精品教程》 【天工Godwork精品教程】任务一:创建工程(导入相片、编辑相机参数、导入POS) 【天工Godwork精品教程】任务二:导入控制点、POS权重设置、自由空三 【天工Godwork精品教程】任务三:刺像控点、空三平差、精度优化调…

[转]数据库事务ACID特性

ACID特性 数据库管理系统中事务(transaction)的四个特性&#xff08;分析时根据首字母缩写依次解释&#xff09;&#xff1a;原子性&#xff08;Atomicity&#xff09;、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;、持久性&#xff…

dotnet-exec 0.4.0 released

dotnet-exec 0.4.0 releasedIntrodotnet-exec 是一个 C# 程序的命令行小工具&#xff0c;可以用来运行一些简单的 C# 程序而无需创建项目文件&#xff0c;而且可以自定义项目的入口方法&#xff0c;支持但不限于 Main 方法Install/Updatedotnet-exec 是一个 dotnet tool&#x…

【天工Godwork精品教程】任务二:导入控制点、POS权重设置、连接点分布检查、自由空三

无人机航测精品专栏链接:《无人机航空摄影测量精品教程》 【天工Godwork精品教程】任务一:创建工程(导入相片、编辑相机参数、导入POS) 【天工Godwork精品教程】任务二:导入控制点、POS权重设置、自由空三 【天工Godwork精品教程】任务三:刺像控点、空三平差、精度优化调…

C语言试题九十二之输入数据有多行,第一行是一个整数n,表示测试用例的个数,后面跟着n行 ,每行包括一个由字母和数字组成的字符串

​ ✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 输入 输入数据有多行,第一行是一个整数n,表示测试用例的个数,后面跟着n行,每行包括一…

Spring中Bean的实例化

在Spring中要实例化一个Bean有几种方法&#xff1a; 1、最常用的&#xff08;普通方法&#xff09; <bean id"myBean" class"www.com.org.MyBean" /> 使用这样方法&#xff0c;按Spring就会使用Bean的默认构造方法&#xff0c;即通过没有参数的构造方…

cc2530学习笔记

case KEY_CHANGE://按键事件 case AF_INCOMING_MSG_CMD://接收数据事件,调用函数AF_DataRequest()接收数据 case ZDO_STATE_CHANGE: //只要网络状态发生改变&#xff0c;就通过ZDO_STATE_CHANGE事件通知所有的任务。 //同时完成对协调器&#xff0c;路由器&#xff0c;终端的设…

【天工Godwork精品教程】任务三:刺像控点、空三平差、精度优化调整

无人机航测精品专栏链接:《无人机航空摄影测量精品教程》 【天工Godwork精品教程】任务一:创建工程(导入相片、编辑相机参数、导入POS) 【天工Godwork精品教程】任务二:导入控制点、POS权重设置、自由空三 【天工Godwork精品教程】任务三:刺像控点、空三平差、精度优化调…

.NET in China - What's New in .NET

点击蓝字关注我们编辑&#xff1a;Alan Wang排版&#xff1a;Rani Sun活动介绍去年11月&#xff0c;.NET 6 的发布&#xff0c;为我们带来了 .NET 多平台应用 UI&#xff08;.NET MAUI&#xff09;。就在前不久&#xff0c;.NET MAUI 已正式发布。未来&#xff0c;作为 .NET 7 …

Android之网络请求提示Cleartext HTTP traffic to dev*******.com not permitted

1、问题 请求服务端网络错误提示错误如下 Cleartext HTTP traffic to dev*******.com not permitted2、解决办法 Android9.0 默认是禁止所有的http,AndroidManifest.xml添加如下 android:usesCleartextTraffic="true"同时在res目录新建文件夹xml,放入network_se…

[转].NET 开源项目 Anet 介绍

使用 Anet 有一段时间了&#xff0c;已经在我的个人网站&#xff08;如 bookist.cc&#xff09;投入使用&#xff0c;目前没有发现什么大问题&#xff0c;所以才敢写篇文章向大家介绍。 GitHub 地址&#xff1a; https://github.com/anet-team/anet Anet 是一个 .NET Core 通用…

【天工Godwork精品教程】任务四:EOS正射影像DOM生成,DOM精编

无人机航测精品专栏链接:《无人机航空摄影测量精品教程》 【天工Godwork精品教程】任务一:创建工程(导入相片、编辑相机参数、导入POS) 【天工Godwork精品教程】任务二:导入控制点、POS权重设置、自由空三 【天工Godwork精品教程】任务三:刺像控点、空三平差、精度优化调…

强烈推荐国内几款优秀的开源电商系统

一、背景需求 我玩得好的朋友刚创业&#xff0c;搞电商最一块&#xff0c;想做个全套的电商框架系统&#xff0c;希望支持公众号、小程序、H5、pc后台管理等功能&#xff0c;创业初期资金非常紧张&#xff0c;请开发人员做成本太高&#xff0c;然后就咨询我&#xff0c;有没有最…

Maui的学习之路(二)--设置

Maui的学习之路&#xff08;二&#xff09; -- 设置上一篇我们做了Maui的基本介绍&#xff0c;理论上这一篇应该会创建第一个Maui的应用&#xff0c;以便对此进行详细的评估&#xff0c;并逐步深入。如果你需要进行Maui首个应用的创建&#xff0c;那么欢迎访问.NET MAUI 创建移…