拖出鼠标左键时鼠标.DirectlyOver工作不正确

时间:2012-12-03 10:44:24

标签: c# wpf drag-and-drop window

当鼠标快速拖出窗外按下左键 Mouse.DirectlyOver返回System.Windows.Controls.Grid而不是null。< / p>

Window.IsMouseOver返回true

new Rect(window.RenderSize).Contains(Mouse.GetPosition(window))返回true

要重现这一点,只需在一个空白的wpf项目中将检查计时器添加到MainWindow()

    public MainWindow()
    {
        InitializeComponent();
        var timer = new System.Threading.Timer(state =>
            Dispatcher.BeginInvoke(new Action(
                () => Debug.WriteLine("Mouse.DirectlyOver = {0}", Mouse.DirectlyOver)
                )),null,0,10);
    }

当我慢慢拖出 时,值是正确的。

有解决方法吗?什么是确定鼠标的协同方法不在应用程序中?

1 个答案:

答案 0 :(得分:0)

找到了解决方法。 在每个刻度线上,我使用WinAPI的

检索鼠标位置
 [DllImport("user32.dll")]
 [return: MarshalAs(UnmanagedType.Bool)]
 internal static extern bool GetCursorPos(ref Win32Point pt);

然后手动在窗口边框内检查。