描述:开发中完成了一个类似于Word的悬浮工具栏功能,选中文本之后可以自动弹出一个工具栏。可以修改字体、字体大小等功能,问题来了,我发现当去进行操作的时候原本选中的RichTextBox的内容的颜色会变为白色,其实仍然是选中状态,可是颜色消失了。查找了大量资料都认为是LostFocus搞的鬼,经过多次试验得出一个结论,那就是重写下LostFocus的事件。
开工:上文中提到认为是LostFocus搞的鬼,RichTextBox有两个LostFocus,OnLostFocus和OnLostKeyboardFocus,两者的区别是前者为鼠标的焦点,后者为键盘的焦点。但是在测试中发现只会进入后者,而不会进入前者,所以还是比较诧异的,诧异归诧异,我们继续。
上代码:
protected override void OnLostKeyboardFocus(KeyboardFocusChangedEventArgs e) { e.Handled = true; }
好吧,只有这么多代码,就是截获了OnLostKeyboardFocus事件即可,但是这样会有一个不太友好的结果就是选中色的丢失事件木有了。我会告诉你,点击下RichTextBox的内部即可消失吗,哈哈,美中不足就是点击其他的焦点不能消失,大家斟酌吧。