0

我正在使用 winForm 按钮实现自定义拖放界面,并且在查看了几个关于如何获取鼠标位置并检查它是否与控件绑定的解决方案后,我无法让它工作。

我试过了:

button.ClientRectangle.Contains(PointToClient(Cursor.Position))

button.ClientRectangle.Contains(PointToClient(Control.MousePosition))

这两种方法都没有奏效。检查鼠标边界似乎是一个简单的操作,但我真的很难过。

我对意外值的推测是:

  1. 获取光标位置的过程可能在光标图像的错误角落
  2. 由于某种原因,方法/功能在按钮上不起作用
4

1 回答 1

2

您使用了错误的对象引用,计算鼠标相对于表单而不是按钮的位置。而且您正在以一种很难调试的方式编写它。使固定:

var pos = button.PointToClient(Cursor.Position);
System.Diagnostics.Debug.WriteLine(pos);         // Now it is easy
if (button.ClientRectangle.Contains(pos)) {
    // etc...        
}
于 2015-08-30T21:43:26.730 回答