WPF相当于Control.CursorChanged事件

本文关键字:事件 CursorChanged Control 相当于 WPF | 更新日期: 2023-09-27 18:07:21

当我在wpf列表视图中拖动鼠标时,我试图改变我的鼠标光标。但是,当我设置鼠标时,它很快就会被其他东西覆盖,并变回拖动光标。

我不确定光标的变化来自哪里,它肯定不是来自我的代码,所以它必须是系统。如果是系统,那么我必须拦截光标更改的事件,并处理该事件,以便光标显示我想要的内容,对吗?

那么WPF中是否存在与此控件等价的控件?CursorChanged事件吗?或者也许有其他方法可以解决这个问题?

编辑:

这是我的部分代码

    private void SetDragCursor()
    {
        if (_badDragLoc)
        {
            Mouse.OverrideCursor = Cursors.No;
        }
        else
        {
            Mouse.OverrideCursor = Cursors.Arrow;
        }
    }
    private void listView_DragOver(object sender, DragEventArgs e)
    {
        if (at a bad drag location)
        {
            _badDragLoc = true;
            SetDragCursor();
        }
    }

我也有一个拖放事件处理程序,其中我也有SetDragCursor()方法。当我在调试器中一步一步地检查每一行代码时,鼠标在进入拖放处理程序后立即从无光标变为拖放光标。这就是为什么我认为必须是系统。

如果它确实是系统,那么如果我可以捕获事件触发,那么我就可以自己处理这些事件,而不让它冒泡。

谢谢!

WPF相当于Control.CursorChanged事件

不是这样的,在DragOver事件期间设置光标的方法如下:

void listView__DragOver(object sender, DragEventArgs e)
     {
         if (!e.Data.GetDataPresent("Images"))
         {
             e.Effects = DragDropEffects.None;
             e.Handled = true;
         }
     }

根据指定给e.Effects的dragdropeffeffects enum的值,鼠标将改变光标。

不要调用Mouse.OverrideCursor,因为这不是正确的方法。