c# - 即使光标不受控制,也能接收鼠标移动

标签 c# winforms mouseevent

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

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

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

知道如何修复它吗?

编辑:我的意思是Control而不是UserControl

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

最佳答案

您正在寻找的内容称为鼠标捕获,描述如下:

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

简而言之:

  • 在控件中按下鼠标时,您“捕获”鼠标输入
  • 那么只要没有其他人捕获鼠标,您就会收到所有鼠标移动事件,甚至是您无法控制的事件
  • 如果您不再需要数据,可以释放捕获,可以选择在“OnMouseUp”中释放捕获

关于c# - 即使光标不受控制,也能接收鼠标移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14191219/

相关文章:

java - JPopupMenu 不显示 JMenuItem 的文本

c# - 使用 C# 管理 Azure Web 应用程序的域

c# - 如何拥有一个全局列表?

c# - 如何使用按钮单击在特定文本框中输入文本

c# - 如何更改 winforms 标签中行与行之间的空格?

c# - 防止任务在运行时再次执行

c# - 如何从字典值中获取 ObservableCollection

c# - .Net 正则表达式是否有小写表达式?

java - 如何使 JSplitPane 在鼠标悬停时自动展开?

javascript - TouchEvent/MouseEvent 在 div 中的局部位置