如何获得鼠标指针直接位于上方的元素

时间:2018-10-15 19:41:24

标签: c# wpf mouseevent

我有一个画布,可以在其中拖放项目。我想对放下事件设置一些限制。例如,如果将项目1放置在画布上,则我希望只有当鼠标指针直接位于项目1上时,项目2才能放置在画布上。

我使用了Mouse.DirectlyOver,但是它返回null。那么,如何在放置事件中直接将鼠标指针悬停在元素上?

注意:我正在使用C#WPF进行编程

谢谢!

1 个答案:

答案 0 :(得分:0)

这个答案是理所当然的,因为您正在使用winforms。

您可以实现此目的的一种方法是获取光标的X / Y坐标以检查它是否在item1内。您可以使用DragEventArgs事件的DragDrop获取触发事件时的鼠标坐标

private void canvas_DragDrop(object sender, DragEventArgs e)
{
    //Get cursor x/y coordinates
    int cursorPositionX = e.X;
    int cursorPositionY = e.Y;

    //Check if it is inside item 1
    if (cursorPositionX > item1.Location.X && cursorPositionX < item1.Location.X + item1.Width && cursorPositionY > item1.Location.Y && cursorPositionY < item1.Location.Y + item1.Height)
    {
        //The mouse is directly above item1

    }
}