C#一个窗体项目使用了WeifenLuo.WinFormsUI.Docking布局插件
其中文档选项卡用来显示文件内容的的,窗体上只有一个富文本框。
奇怪的事情发生了,只要把窗体停靠成文档选项卡,富文本框自带的快捷操作就丢失了,
就是Ctrl+X,Ctrl+C,Ctrl+V,Ctrl+Z都不能用。但是把窗体浮动出来又可以用了。
一开始以为是子窗体没有获取焦点,但是当前活动子窗体就是该文档窗体。问题不知道出在哪里,我自己用KeyDown事件来模拟实现组合键,但是上面的组合键仍然无效。
基本没有改过什么特别的属性,仅仅做完布局就这样。所以不知从何下手。
如图所示:
不要使用 WeifenLuo.WinFormsUI.Docking。
估计暂时也没有答案了,解决方案倒是有,我仅仅是想知道问题症结。反正问题肯定出在Docking插件上了。
说说解决方案吧:
本来我打算使用Keydown事件来手工处理组合键,但是富文本框获取焦点后上述的组合键也无效,这个原因不明,可能需要重写消息函数,估计是文本框很特殊,因为需要支持文本输入,本来就需要监听键盘。这个方法只好放弃。
我只好使用了右击菜单,给富文本框加了右击菜单,然后设置右击菜单的组合键,从而达到使用组合键操作的目的。
这个应该是windows消息机制导致的,停靠之后,富文本所在的父容器变成了主窗口,这时只有主窗口能收到系统给它的message,建议题主重写主窗口的“WndProc”等事件,把收到的消息转发給富文本所在的窗口。