捕获自定义SplitContainerDesigner的鼠标事件

时间:2010-07-16 17:04:21

标签: vb.net .net-2.0 splitcontainer design-surface

我正在尝试创建一个用户控件,它将在两个面板之间提供一个可拖动的拆分器 - 与SplitContainer完全相同 - 在自定义IDesignerHost实现中。据我所知,SplitContainer本身不是一个选择;除非在Visual Studio的Designer中使用,否则它将引发异常。

我的实现看起来大致像this,除了我没有收到必要的鼠标事件。我已经尝试了事件处理程序,On*覆盖并覆盖用户控件本身,主机控件和父窗体中的WndProc,但我似乎没有收到WM_MOUSEMOVE,{ {1}}或WM_LBUTTONDOWN个事件任何地方。根据{{​​3}},我应该在“控制设计师”中收到WM_LBUTTONUP;我不确定在这种情况下指的是什么。

我是如何实现可拖动分割器的?

1 个答案:

答案 0 :(得分:0)

事实证明这很容易 - 一旦你知道如何。

  1. 将控件上的Designer属性设置为继承自ControlDesigner的自定义类。
  2. 覆盖OnSetCursor方法,以便在分割器区域上分别显示HSplitVSplit光标。 Per this ticket,确保设置控件的光标(这会导致堆栈溢出,崩溃或其他不稳定的行为,当然不是你想要的),而是{{1} }。
  3. 覆盖Cursor.CurrentOnMouseDragBeginOnMouseDragMove以调整内部面板的大小。