【发布时间】:2015-02-06 15:40:13
【问题描述】:
有谁知道我如何轻松检测 Windows 操作系统 IME(输入法编辑器)是否在 Silverlight 框架中处于活动状态。让我解释一下导致我出现问题的场景:
我遇到了一个问题,即使用中文(简体,中国)微软拼音会导致 CLR 异常。该场景是当 TextBox 正在处理其 TextChanged 事件时。例如:
- 文本框不应接受字符,而只能接受数字。为了实现这一点,它正在处理其 TextChanged 事件,并且在该事件中,它通过将其 Text 属性逐个字符地反转为最后一个正确的输入来处理输入。在这种情况下,如果使用(中文(简体,中国)Microsoft 拼音)IME,则会抛出 FatalExecutionEngineError。
在 WPF 中,可以通过使用 InputMethod.Current.ImeState 检查 IME 是否处于活动状态,通过不反转 TextChanged 事件中的文本来解决此问题。不幸的是,这在 Silverlight 框架中不可用,这就是我发布此问题的原因。
目前我唯一发现的是,我可以将 InputMethod 类的 IsInputMethodEnabled 属性设置为 TextBox 控件,以禁用所有 IME 输入,但这当然不仅会禁用不正确的输入,还会禁用正确的输入。
有人知道如何检测 IME 是否在 Silverlight 平台中使用/处于活动状态?谢谢。
【问题讨论】:
标签: c# .net wpf silverlight