Vla*_*kov 5 .net c# silverlight wpf
有谁知道如何在Silverlight框架中轻松检测Windows操作系统IME(输入法编辑器)是否处于活动状态.让我解释一下造成我问题的情景:
我遇到了一个问题,即使用中文(简体中文)Microsoft拼音导致CLR异常.场景是TextBox处理其TextChanged事件的时间.例如:
在WPF中,可以通过使用InputMethod.Current不反转TextChanged事件中的Text来克服此问题.ImeState检查IME是否处于活动状态.不幸的是,这在Silverlight框架中不可用,这就是我发布这个问题的原因.
目前我唯一发现的是我可以将InputMethod类的IsInputMethodEnabled属性设置为TextBox控件,以便禁用所有IME输入,但这当然不仅会禁用错误的输入,还会禁用正确的输入.
任何人都有任何想法如何检测在Silverlight平台中是否使用/活动IME?谢谢.
我能够在WPF和Silverlight框架中解决这个问题.问题是由于在IME输入符号时处理TextBox文本,而文本正在使IME本身改变其输入,它看起来不像Windows操作系统正常处理并导致CLR异常.
我做的是:
在上面提到的WPF框架中,我使用静态InputMethod.Current.ImeState值来确定IME是否处于活动状态,如果它处于On值,我跳过了在TextChanged事件中恢复TextBox Text属性.
在Silverlight框架中,我使用TextInputStart,TextInputUpdate事件和本地私有字段的组合来存储,如果检测到IME.该TextInputUpdate如果IME处于激活状态时,才会触发事件,并且作为输入和TextInputStart总是触发.我做的是:
希望这是有帮助的.
| 归档时间: |
|
| 查看次数: |
1124 次 |
| 最近记录: |