我正在尝试创建一个用户控件,它将在两个面板之间提供一个可拖动的拆分器 - 与SplitContainer完全相同 - 在自定义IDesignerHost实现中。据我所知,SplitContainer本身不是一个选择;除非在Visual Studio的Designer中使用,否则它将引发异常。
我的实现看起来大致像this,除了我没有收到必要的鼠标事件。我已经尝试了事件处理程序,On*
覆盖并覆盖用户控件本身,主机控件和父窗体中的WndProc
,但我似乎没有收到WM_MOUSEMOVE
,{ {1}}或WM_LBUTTONDOWN
个事件任何地方。根据{{3}},我应该在“控制设计师”中收到WM_LBUTTONUP
;我不确定在这种情况下指的是什么。
我是如何实现可拖动分割器的?
答案 0 :(得分:0)
事实证明这很容易 - 一旦你知道如何。
Designer
属性设置为继承自ControlDesigner
的自定义类。OnSetCursor
方法,以便在分割器区域上分别显示HSplit
或VSplit
光标。 Per this ticket,确保不设置控件的光标(这会导致堆栈溢出,崩溃或其他不稳定的行为,当然不是你想要的),而是{{1} }。Cursor.Current
,OnMouseDragBegin
和OnMouseDragMove
以调整内部面板的大小。