我正在使用winForm按钮实现自定义拖放界面,并在查看了几个关于如何获取鼠标位置的解决方案并检查它与控件绑定后无法使其工作。
我试过了:
button.ClientRectangle.Contains(PointToClient(Cursor.Position))
和
button.ClientRectangle.Contains(PointToClient(Control.MousePosition))
这两个都没能奏效。检查鼠标边界看起来像一个简单的操作,但我真的很难过。
我对意外值的推测是:
答案 0 :(得分:2)
您正在使用错误的对象引用,计算相对于表单的鼠标位置而不是按钮。而且你正在以一种非常难以调试的方式编写它。修正:
var pos = button.PointToClient(Cursor.Position);
System.Diagnostics.Debug.WriteLine(pos); // Now it is easy
if (button.ClientRectangle.Contains(pos)) {
// etc...
}