我在C#.net 3.5中创建了自己的单行文本框控件
我从头开始写这个,包括我自己的选择代码,滚动,复制/粘贴等.它甚至可以选择从左到右的文本,而不是我曾经使用过的...
我遇到的问题是与IME(输入法编辑器)集成.IME在某种程度上确实有效,但我遇到了一些问题.我在这里列出其中一个.
通常,使用TextBox,IME构造将在TextBox中呈现.但是,在我的控制中,IME显示在屏幕的右下角.我尝试查看其他自定义控件,包括SharpDevelop中使用的控件.但是,这也存在同样的问题.键入中文,日文或韩文导致IME的内容在屏幕的右下角完成.
我需要一些关于如何在我自己的文本框中完成此操作的指针,我查看了Windows API for IME,但是有很多功能,我不知道从哪里开始.
那么,有什么想法吗?
如果任何代码示例都在C++(托管/非托管)或VB.net中,那就没问题.我可以轻松地移动它.
我使用日语IME作为示例,但在使用IME输入的其他语言中可能是相同的.
当用户使用IME将文本键入文本框时,将触发KeyDown和KeyUp事件.但是,在用户使用Enter键验证IME中的输入之前,TextBox.Text属性不会返回键入的文本.
因此,例如,如果用户键入5次あ然后验证,我将得到5个keydown/keyup事件,每次TextBox.Text返回""(空字符串),最后我将得到一个keydown/keyup为enter键和TextBox.Text将直接变成"あああああ".
在用户输入结束之前,如何在用户输入时获取用户输入?
(我知道如何在网页上的<input>字段的javascript中执行此操作,因此必须可以在C#中使用!)