当设置Form.KeyPreview为true时,Form能在子控件之前接收到键盘消息。我想在自定义控件中实现类似的功能,在子控件之前能处理键盘消息,最好能实现可以决定是否继续由子控件处理。我首先想到用Hook,但KeyBoardHook最小只能到线程,不能到控件,这不是我所希望的。然后我只能在Control.ControlAdded事件中将所有子控件的KeyDown事件挂到父控件上,这样比较符合了,但总觉得不够合理。不知各位有什么建议,多谢了。

解决方案 »

  1.   

    我觉得如果你认为处理每一个子控件的Key事件不是很好,那么可以换一种思路。
    你包装的所谓的控件为什么一定要从UserControl继承,就可以从Form继承,如果希望Form也拥有像UserControl一样的行为,那么只要将该From设置成为容器Fomr的子窗口就行了,SetParent这个API就可以做到。一个在容器FORM内的没有边框的Form和UserControl也没啥区别。:D
      

  2.   

    正好看到一个资料,应该对你有帮助。
    http://www.syncfusion.com/FAQ/WindowsForms/FAQ_c46c.aspx#q482q