关于WINFORM中输入法的设置 [转]
(一)Control.ImeMode 属性:获取或设置控件的输入法编辑器 (IME) 模式。
(1)由于窗体属性继承关系,如果你的WINFORM窗体中大部分需要设置为输入法有效状态,可以设置为FORM的ImeMode属性为On.
(2)如果需要某些TextBox为输入法有效,则使用ImeMode.On
(3)如果需要设置整个窗体的输入法全部为半角,可以使用以下代码:
#region 修正输入法全角/半角的问题
//声明一些API函数
[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);
//如果输入法处于打开状态
if (ImmGetOpenStatus(HIme))
{
int iMode = 0;
int iSentence = 0;
//检索输入法信息
bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence);
if (bSuccess)
{
//如果是全角,转换成半角
if ((iMode & IME_CMODE_FULLSHAPE) > 0)
ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE);
}
}
}
#endregion 修正输入法全角/半角的问题
注意:需要引用以下命名空间:using System.Runtime.InteropServices;
(4)对于仅用于输入数值的 TextBox 控件,ImeMode 属性通常设置为 ImeMode.Off。对于 Form 类,ImeMode 属性值设置为 ImeMode.NoControl。
(5)不直接支持输入方法编辑器或允许从 IME 直接输入的大多数类将此属性的值设置为 NoControl。
重要事项:
除非 ImeMode 已经以编程方式设置为 ImeMode.Disable,否则用户能够以交互方式更改它。在前一种情况下,用户将无法使用 IME。
(二)ImeMode各属性的含义:
ImeMode 枚举:指定一个值,该值是用来确定在选定了对象时该对象的输入法编辑器 (IME) 的状态。
以下是微软的解释:
成员名称 | 说明 | |
---|---|---|
Alpha | 字母数字单字节字符 (SBC)。此设置仅对朝鲜语和日语 IME 有效。 | |
AlphaFull | 字母数字双字节字符。此设置仅对朝鲜语和日语 IME 有效。 | |
Close | ||
Disable | IME 被禁用。如果使用此设置,则用户无法从键盘打开 IME,而且 IME 浮动窗口处于隐藏状态。 | |
Hangul | 朝鲜文 SBC。此设置仅对朝鲜语 IME 有效。 | |
HangulFull | 朝鲜文 DBC。此设置仅对朝鲜语 IME 有效。 | |
Hiragana | 平假名 DBC。此设置仅对日语 IME 有效。 | |
Inherit | 继承父控件的 IME 模式。 | |
Katakana | 片假名 DBC。此设置仅对日语 IME 有效。 | |
KatakanaHalf | 片假名 SBC。此设置仅对日语 IME 有效。 | |
NoControl | 无(默认)。 | |
Off | IME 已关闭。此模式指示 IME 已关闭,这意味着该对象的行为方式与英语输入模式相同。此设置仅对日语、简体中文和繁体中文 IME 有效。 | |
On | IME 已打开。此值指示 IME 已打开,可以输入中文或日语特定的字符。此设置仅对日语、简体中文和繁体中文 IME 有效。 |
备注:
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1665418