相关疑难解决方法(0)

你怎么用IME?

我想制作一个处理用户输入的控件,所以我希望能够处理不同的键盘,其中一种方法是使用IME.

如果您不处理它,当您有IME激活时会出现一个浮动窗口(例如日语写入活动).我发现需要处理的消息,但我不知道如何发送我正在捕获到IME的密钥以及何时获得有效的转换字符.

windows winapi ime

14
推荐指数
1
解决办法
1万
查看次数

如何在Winform中获取韩文输入?

我想在winform应用程序中的ediatble区域中键入韩语文本.

但是人物正在重复,我试图覆盖默认值WndProc,但没有任何效果.

switch (m.WParam.ToInt32())
                {
case Common.Interop.Window.WM_IME_CHAR:
                break;

            case Common.Interop.Window.WM_IME_ENDCOMPOSITION:
                    PassCharToScreen(m);
                break;

            case Common.Interop.Window.WM_CHAR:
                    PassCharToScreen(m);
                break;

            case Common.Interop.Window.WM_IME_NOTIFY:
                break;
            case Common.Interop.Window.WM_IME_COMPOSITION:
                PassCharToScreen(m);
                break;
            case Common.Interop.Window.WM_IME_COMPOSITIONFULL:
                break;
Run Code Online (Sandbox Code Playgroud)

当我输入英文时,断点命中WM_CHAR,但是当我输入韩文时,它会击中WM_IME_COMPOSITION第一个字符,然后在第一个字符后首先命中WM_IME_COMPOSITION然后点击WM_CHAR.

我观察到它键入了第一个字符正确.例如ㅁ(韩文字符)输入第二个字符.ㅁㅂㅁ(First char,second char,first char).我想要记事本中的行为

c# ime winforms

10
推荐指数
1
解决办法
603
查看次数

C#和IME - 获取当前输入文本

我使用日语IME作为示例,但在使用IME输入的其他语言中可能是相同的.

当用户使用IME将文本键入文本框时,将触发KeyDown和KeyUp事件.但是,在用户使用Enter键验证IME中的输入之前,TextBox.Text属性不会返回键入的文本.

因此,例如,如果用户键入5次あ然后验证,我将得到5个keydown/keyup事件,每次TextBox.Text返回""(空字符串),最后我将得到一个keydown/keyup为enter键和TextBox.Text将直接变成"あああああ".

在用户输入结束之前,如何在用户输入时获取用户输入?

(我知道如何在网页上的<input>字段的javascript中执行此操作,因此必须可以在C#中使用!)

c# unicode ime

5
推荐指数
1
解决办法
4473
查看次数

标签 统计

ime ×3

c# ×2

unicode ×1

winapi ×1

windows ×1

winforms ×1