如何在设计时将鼠标事件传递给WinForms控件?

时间:2013-07-31 11:50:09

标签: c# winforms controls mouseevent design-time

我们有一个定制的WinForms网格控件,它继承了标准的Control类。用户可以使用我们的自定义谓词和交互式列集合编辑器在设计时创建列,但是他们无法使用常规鼠标操作在设计时以交互方式调整创建的列的大小(类似于Windows资源管理器中的列大小调整)。

为了允许这一点 - 即当鼠标指针位于其区域上时将所有鼠标输入传递给网格标题,我们覆盖了附加到我们控件的设计器的GetHitTest方法(继承ControlDesigner)。在结构上它看起来像下面那样:

protected override bool GetHitTest(System.Drawing.Point point)
{
  if (IsMouseInGridHeaderArea())
    return true;
  else
    return false;
}

当我们移动鼠标指针时,所有工作几乎与预期一致:当用户将鼠标移到它们上方时,列标题在设计时正确突出显示,并且鼠标指针变为双箭头WE-resize光标位于列分隔区域上方。后一种情况唯一的小问题是光标不断变回4箭头光标,表明可以选择/移动整个控件(WinForms表单设计器中表单上所有控件的标准行为)。

当我们在可以执行列调整大小时按住鼠标左键时,没有任何反应。甚至整个网格控件也不会在表单上移动。

如何解决此问题?

0 个答案:

没有答案