在拖放过程中获取鼠标位置

时间:2009-05-27 11:59:06

标签: wpf drag-and-drop mouse position

有没有人知道如何在WPF中进行拖放操作时获得正确的鼠标位置?我使用了Mouse.GetPosition(),但返回的值不正确。

2 个答案:

答案 0 :(得分:28)

没关系,我找到了解决方案。使用DragEventArgs.GetPosition()返回正确的位置。

答案 1 :(得分:1)

DragOver 处理程序是针对一般情况的解决方案。但是,如果在光标不在可放置表面中时需要精确的光标点,则可以使用下面的 GetCurrentCursorPosition 方法。我提到了 Jignesh Beladiya's post

using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Media;

public static class CursorHelper
{
    [StructLayout(LayoutKind.Sequential)]
    struct Win32Point
    {
        public Int32 X;
        public Int32 Y;
    };

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool GetCursorPos(ref Win32Point pt);

    public static Point GetCurrentCursorPosition(Visual relativeTo)
    {
        Win32Point w32Mouse = new Win32Point();
        GetCursorPos(ref w32Mouse);
        return relativeTo.PointFromScreen(new Point(w32Mouse.X, w32Mouse.Y));
    }
}