【问题标题】:Catching mouse events for a custom SplitContainerDesigner为自定义 SplitContainerDesigner 捕获鼠标事件
【发布时间】:2010-07-16 17:04:21
【问题描述】:

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

我的实现大致类似于this,除了我没有收到必要的鼠标事件。我已经尝试了事件处理程序,On* 在用户控件本身、主机控件和父窗体中覆盖和覆盖 WndProc,但我似乎没有收到 WM_MOUSEMOVEWM_LBUTTONDOWNWM_LBUTTONUP事件任何地方。根据this bug report,我应该在“控件设计器”中收到WM_MOUSEMOVE;我不确定在这种情况下指的是什么。

有什么想法可以实现可拖动的拆分器吗?

【问题讨论】:

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


    【解决方案1】:

    事实证明这很容易——只要你知道怎么做。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多