C#中Winfrom默認(rèn)輸入法的設(shè)置方法
本文實(shí)例講述了C#中Winfrom默認(rèn)輸入法的設(shè)置方法。分享給大家供大家參考。具體分析如下:
在WINFORM中我們經(jīng)常遇到文本輸入框中輸入法被禁用或老是變?nèi)禽斎敕ǖ葐?wèn)題,經(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è)置整個(gè)窗體的輸入法全部為半角,可以使用以下代碼:
#region 修正輸入法全角/半角的問(wèn)題
//聲明一些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);
//如果輸入法處于打開(kāi)狀態(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 修正輸入法全角/半角的問(wèn)題
注意:需要引用以下命名空間:using System.Runtime.InteropServices;
(4)對(duì)于僅用于輸入數(shù)值的 TextBox 控件,ImeMode 屬性通常設(shè)置為 ImeMode.Off。對(duì)于 Form 類(lèi),ImeMode 屬性值設(shè)置為 ImeMode.NoControl。
(5)不直接支持輸入方法編輯器或允許從 IME 直接輸入的大多數(shù)類(lèi)將此屬性的值設(shè)置為 NoControl。
重要事項(xiàng):
除非 ImeMode 已經(jīng)以編程方式設(shè)置為 ImeMode.Disable,否則用戶能夠以交互方式更改它。在前一種情況下,用戶將無(wú)法使用 IME。
二、ImeMode各屬性的含義:
ImeMode 枚舉:指定一個(gè)值,該值是用來(lái)確定在選定了對(duì)象時(shí)該對(duì)象的輸入法編輯器 (IME) 的狀態(tài)。
以下是微軟的解釋:
| |
成員名稱(chēng) | 說(shuō)明 |
|---|---|---|
| Alpha | 字母數(shù)字單字節(jié)字符 (SBC)。此設(shè)置僅對(duì)朝鮮語(yǔ)和日語(yǔ) IME 有效。 |
|
| AlphaFull | 字母數(shù)字雙字節(jié)字符。此設(shè)置僅對(duì)朝鮮語(yǔ)和日語(yǔ) IME 有效。 |
|
| Close | |
|
| Disable | IME 被禁用。如果使用此設(shè)置,則用戶無(wú)法從鍵盤(pán)打開(kāi) IME,而且 IME 浮動(dòng)窗口處于隱藏狀態(tài)。 |
|
| Hangul | 朝鮮文 SBC。此設(shè)置僅對(duì)朝鮮語(yǔ) IME 有效。 |
|
| HangulFull | 朝鮮文 DBC。此設(shè)置僅對(duì)朝鮮語(yǔ) IME 有效。 |
|
| Hiragana | 平假名 DBC。此設(shè)置僅對(duì)日語(yǔ) IME 有效。 |
|
| Inherit | 繼承父控件的 IME 模式。 |
|
| Katakana | 片假名 DBC。此設(shè)置僅對(duì)日語(yǔ) IME 有效。 |
|
| KatakanaHalf | 片假名 SBC。此設(shè)置僅對(duì)日語(yǔ) IME 有效。 |
|
| NoControl | 無(wú)(默認(rèn))。 |
|
| Off | IME 已關(guān)閉。此模式指示 IME 已關(guān)閉,這意味著該對(duì)象的行為方式與英語(yǔ)輸入模式相同。此設(shè)置僅對(duì)日語(yǔ)、簡(jiǎn)體中文和繁體中文 IME 有效。 |
|
| On | IME 已打開(kāi)。此值指示 IME 已打開(kāi),可以輸入中文或日語(yǔ)特定的字符。此設(shè)置僅對(duì)日語(yǔ)、簡(jiǎn)體中文和繁體中文 IME 有效。 |
備注:
輸入法編輯器 (IME) 允許用戶輸入和編輯中文、日語(yǔ)和朝鮮語(yǔ)字符。IME 是用于編寫(xiě)中文、日語(yǔ)和朝鮮語(yǔ)腳本的基本組件。這些書(shū)寫(xiě)體系具有的字符比可為常規(guī)鍵盤(pán)編碼的字符要多。這些語(yǔ)言的 IME 使用描述單個(gè)字符或成組字符的基字符序列,以便允許您輸入范圍較廣的一組字符?;址梢允莵?lái)自朝鮮文音節(jié)的成分字母、日語(yǔ)漢字字符的拼音成分,或者中文字符的各種組合。
三、如果設(shè)置為合適的輸入法?
這里僅給一個(gè)例子,打擊可以舉一返三:
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());
}
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
C#從實(shí)體對(duì)象集合中導(dǎo)出Excel的代碼
數(shù)據(jù)的導(dǎo)出是項(xiàng)目中經(jīng)常要實(shí)現(xiàn)的功能,就拿最常見(jiàn)的要導(dǎo)出成Excel來(lái)說(shuō),網(wǎng)上看來(lái)看去,都是介紹從Datatable中導(dǎo)出2008-08-08
jQuery uploadify在谷歌和火狐瀏覽器上傳失敗的解決方案
jquery.uploadify插件是一個(gè)基于jquery來(lái)實(shí)現(xiàn)上傳的,這個(gè)插件很好用,每一次向后臺(tái)發(fā)送數(shù)據(jù)流請(qǐng)求時(shí),ie會(huì)自動(dòng)把本地cookie存儲(chǔ)捆綁在一起發(fā)送給服務(wù)器。但firefox、chrome不會(huì)這樣做,他們會(huì)認(rèn)為這樣不安全,下面介紹下jQuery uploadify上傳失敗的解決方案2015-08-08
C#使用帶like的sql語(yǔ)句時(shí)防sql注入的方法
這篇文章主要介紹了C#使用帶like的sql語(yǔ)句時(shí)防sql注入的方法,采用了一個(gè)比較簡(jiǎn)單的字符串過(guò)濾方法就可以有效提高sql語(yǔ)句的安全性,防止sql注入,需要的朋友可以參考下2014-09-09
C#動(dòng)態(tài)生成PictureBox并指定圖片的方法
這篇文章主要介紹了C#動(dòng)態(tài)生成PictureBox并指定圖片的方法,實(shí)例分析了C#圖形控件的動(dòng)態(tài)生成及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
VS2012 未找到與約束ContractName匹配的導(dǎo)出
這篇文章主要介紹了在更新的windows補(bǔ)丁后,Visual Studio 用戶可能無(wú)法打開(kāi)或創(chuàng)建 C++ 或 JavaScript 文件或項(xiàng)目,小編的解決辦法,希望可以幫助到大家2018-04-04
C#編程簡(jiǎn)單實(shí)現(xiàn)生成PDF文檔的方法示例
這篇文章主要介紹了C#編程簡(jiǎn)單實(shí)現(xiàn)生成PDF文檔的方法,結(jié)合實(shí)例形式分析了C#生成PDF文檔的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07

