检查鼠标是否在控件内的意外输出

时间:2015-08-30 21:22:06

标签: c# winforms button bounds aabb

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

我试过了:

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

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

这两个都没能奏效。检查鼠标边界看起来像一个简单的操作,但我真的很难过。

我对意外值的推测是:

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

1 个答案:

答案 0 :(得分:2)

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

var pos = button.PointToClient(Cursor.Position);
System.Diagnostics.Debug.WriteLine(pos);         // Now it is easy
if (button.ClientRectangle.Contains(pos)) {
    // etc...        
}