C#中Winfrom默認(rèn)輸入法的設(shè)置方法
本文實(shí)例講述了C#中Winfrom默認(rèn)輸入法的設(shè)置方法。分享給大家供大家參考。具體分析如下:
在WINFORM中我們經(jīng)常遇到文本輸入框中輸入法被禁用或老是變?nèi)禽斎敕ǖ葐栴},經(jīng)查閱相關(guān)資料,現(xiàn)小結(jié)如下:
一、Control.ImeMode 屬性:獲取或設(shè)置控件的輸入法編輯器 (IME) 模式。
(1)由于窗體屬性繼承關(guān)系,如果你的WINFORM窗體中大部分需要設(shè)置為輸入法有效狀態(tài),可以設(shè)置為FORM的ImeMode屬性為On.
(2)如果需要某些TextBox為輸入法有效,則使用ImeMode.On
(3)如果需要設(shè)置整個窗體的輸入法全部為半角,可以使用以下代碼:
#region 修正輸入法全角/半角的問題 //聲明一些API函數(shù) [DllImport("imm32.dll")] public static extern IntPtr ImmGetContext(IntPtr hwnd); [DllImport("imm32.dll")] public static extern bool ImmGetOpenStatus(IntPtr himc); [DllImport("imm32.dll")] public static extern bool ImmSetOpenStatus(IntPtr himc, bool b); [DllImport("imm32.dll")] public static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref int lpdw2); [DllImport("imm32.dll")] public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey); private const int IME_CMODE_FULLSHAPE = 0x8; private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11; protected override void OnActivated(EventArgs e) { base.OnActivated(e); IntPtr HIme = ImmGetContext(this.Handle); //如果輸入法處于打開狀態(tài) if (ImmGetOpenStatus(HIme)) { int iMode = 0; int iSentence = 0; //檢索輸入法信息 bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence); if (bSuccess) { //如果是全角,轉(zhuǎn)換成半角 if ((iMode & IME_CMODE_FULLSHAPE) > 0) ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE); } } } #endregion 修正輸入法全角/半角的問題
注意:需要引用以下命名空間:using System.Runtime.InteropServices;
(4)對于僅用于輸入數(shù)值的 TextBox 控件,ImeMode 屬性通常設(shè)置為 ImeMode.Off。對于 Form 類,ImeMode 屬性值設(shè)置為 ImeMode.NoControl。
(5)不直接支持輸入方法編輯器或允許從 IME 直接輸入的大多數(shù)類將此屬性的值設(shè)置為 NoControl。
重要事項:
除非 ImeMode 已經(jīng)以編程方式設(shè)置為 ImeMode.Disable,否則用戶能夠以交互方式更改它。在前一種情況下,用戶將無法使用 IME。
二、ImeMode各屬性的含義:
ImeMode 枚舉:指定一個值,該值是用來確定在選定了對象時該對象的輸入法編輯器 (IME) 的狀態(tài)。
以下是微軟的解釋:
|
成員名稱 | 說明 |
---|---|---|
Alpha | 字母數(shù)字單字節(jié)字符 (SBC)。此設(shè)置僅對朝鮮語和日語 IME 有效。 |
|
AlphaFull | 字母數(shù)字雙字節(jié)字符。此設(shè)置僅對朝鮮語和日語 IME 有效。 |
|
Close | |
|
Disable | IME 被禁用。如果使用此設(shè)置,則用戶無法從鍵盤打開 IME,而且 IME 浮動窗口處于隱藏狀態(tài)。 |
|
Hangul | 朝鮮文 SBC。此設(shè)置僅對朝鮮語 IME 有效。 |
|
HangulFull | 朝鮮文 DBC。此設(shè)置僅對朝鮮語 IME 有效。 |
|
Hiragana | 平假名 DBC。此設(shè)置僅對日語 IME 有效。 |
|
Inherit | 繼承父控件的 IME 模式。 |
|
Katakana | 片假名 DBC。此設(shè)置僅對日語 IME 有效。 |
|
KatakanaHalf | 片假名 SBC。此設(shè)置僅對日語 IME 有效。 |
|
NoControl | 無(默認(rèn))。 |
|
Off | IME 已關(guān)閉。此模式指示 IME 已關(guān)閉,這意味著該對象的行為方式與英語輸入模式相同。此設(shè)置僅對日語、簡體中文和繁體中文 IME 有效。 |
|
On | IME 已打開。此值指示 IME 已打開,可以輸入中文或日語特定的字符。此設(shè)置僅對日語、簡體中文和繁體中文 IME 有效。 |
備注:
輸入法編輯器 (IME) 允許用戶輸入和編輯中文、日語和朝鮮語字符。IME 是用于編寫中文、日語和朝鮮語腳本的基本組件。這些書寫體系具有的字符比可為常規(guī)鍵盤編碼的字符要多。這些語言的 IME 使用描述單個字符或成組字符的基字符序列,以便允許您輸入范圍較廣的一組字符?;址梢允莵碜猿r文音節(jié)的成分字母、日語漢字字符的拼音成分,或者中文字符的各種組合。
三、如果設(shè)置為合適的輸入法?
這里僅給一個例子,打擊可以舉一返三:
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; public class Form1 : System.Windows.Forms.Form { RichTextBox rtb = new RichTextBox(); public Form1() { this.Controls.Add(rtb); rtb.Dock = DockStyle.Fill; this.InputLanguageChanged += new InputLanguageChangedEventHandler(languageChange); } private void languageChange(Object sender, InputLanguageChangedEventArgs e) { // If the input language is Japanese, set the initial IMEMode to Katakana. if (e.InputLanguage.Culture.TwoLetterISOLanguageName.Equals("ja")) { rtb.ImeMode = System.Windows.Forms.ImeMode.Katakana; } } public static void Main(string[] args) { Application.Run(new Form1()); } }
希望本文所述對大家的C#程序設(shè)計有所幫助。
相關(guān)文章
C#從實(shí)體對象集合中導(dǎo)出Excel的代碼
數(shù)據(jù)的導(dǎo)出是項目中經(jīng)常要實(shí)現(xiàn)的功能,就拿最常見的要導(dǎo)出成Excel來說,網(wǎng)上看來看去,都是介紹從Datatable中導(dǎo)出2008-08-08jQuery uploadify在谷歌和火狐瀏覽器上傳失敗的解決方案
jquery.uploadify插件是一個基于jquery來實(shí)現(xiàn)上傳的,這個插件很好用,每一次向后臺發(fā)送數(shù)據(jù)流請求時,ie會自動把本地cookie存儲捆綁在一起發(fā)送給服務(wù)器。但firefox、chrome不會這樣做,他們會認(rèn)為這樣不安全,下面介紹下jQuery uploadify上傳失敗的解決方案2015-08-08VS2012 未找到與約束ContractName匹配的導(dǎo)出
這篇文章主要介紹了在更新的windows補(bǔ)丁后,Visual Studio 用戶可能無法打開或創(chuàng)建 C++ 或 JavaScript 文件或項目,小編的解決辦法,希望可以幫助到大家2018-04-04C#編程簡單實(shí)現(xiàn)生成PDF文檔的方法示例
這篇文章主要介紹了C#編程簡單實(shí)現(xiàn)生成PDF文檔的方法,結(jié)合實(shí)例形式分析了C#生成PDF文檔的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07