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.pswp.cn/news/285665.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285665.shtml
英文地址,請注明出處:http://en.pswp.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 創建移…