2

我做了类似滚动条的操作Control。一切都很好,但是当光标离开控制区域时,OnMouseMove不再收到。

当您使用标准 Windows 滚动条时,即使鼠标光标位于控件表面之外,您也可以使用它。

为了避免这种情况,我唯一的想法是从屏幕上获取光标位置,然后计算屏幕上的滚动条位置,并使用计时器或其他东西来更新我的Control. 但这听起来非常困难和丑陋。

知道如何解决吗?

编辑:我的意思Control不是UserControl

EDIT2:它接收鼠标!我在代码中有错误,我在 MouseMove 方法中调用了 MouseDown,但是在 MouseDown 我有 X/Y 约束,如果 X<0 等,它将强制返回。

4

1 回答 1

2

您正在寻找的东西被称为mouse capture并在此处描述:

http://msdn.microsoft.com/en-us/library/ms171545(v=vs.80).aspx

简而言之:

  • 在您的控件中按下鼠标,您“捕获”鼠标输入
  • 那么只要没有其他人捕获鼠标,您将收到所有鼠标移动事件,即使是您无法控制的事件
  • 如果不再需要数据,您可以释放捕获,可选择在“OnMouseUp”中
于 2013-01-07T07:48:20.703 回答