Wpf控件RichTextBox(在IME模式下)段落元素集合的Inlines.Clear()和控件的PreviewTextInput事件

2017-09-18 19:58:19来源:cnblogs.com作者:尹泓人点击

分享

需求:实时解析RichTextBox中输入的内容,不允许换行。

设计:由于Wpf对东亚语言支持不太好,首先抛弃监听KeyUp或KeyDown的想法,选择订阅PreviewTextInput事件,然后在事件里读取文本,解析文本,最后清空控件中的文本,再按照顺序把解析的文本集合添加到控件中。

实现:按照设计完成了代码实现,在默认英文输入法下一切正常,切换到中文输入法试试,结果输入字符的时候文本不接受了,奇了个怪了,什么情况?把“设计”中事件里的内容注释掉,发现OK,这说明是内部实现问题。马上定位到RichTextBox.Paragraph.Inlines.Clear();果然把这句话先注释掉调试,一切任何输入法都正常。好吧,我没时间研究Clear()方法内部是如何实现的,既然Clear()不行就写代码循环删除了,OK,输入任何字符均可以。

总结:这应该IME模式下的一个Bug吧?算了,随它去吧。

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台