C# WPF等效于Control.CursorChanged事件
在wpf列表视图中拖动鼠标时,我试图在某个点更改鼠标光标。但是,当我设置鼠标时,它很快会被其他内容覆盖,并被更改回拖动光标 我不确定光标更改来自何处,它肯定不是来自我的代码,所以它必须是系统。如果是系统,那么我必须截取光标更改事件,并处理该事件,以便光标显示我想要的内容,对吗 那么是否存在与此Control.CursorChanged事件等效的WPF?或者也许有其他方法来解决这个问题 编辑: 这是我的部分代码C# WPF等效于Control.CursorChanged事件,c#,wpf,drag-and-drop,cursor,C#,Wpf,Drag And Drop,Cursor,在wpf列表视图中拖动鼠标时,我试图在某个点更改鼠标光标。但是,当我设置鼠标时,它很快会被其他内容覆盖,并被更改回拖动光标 我不确定光标更改来自何处,它肯定不是来自我的代码,所以它必须是系统。如果是系统,那么我必须截取光标更改事件,并处理该事件,以便光标显示我想要的内容,对吗 那么是否存在与此Control.CursorChanged事件等效的WPF?或者也许有其他方法来解决这个问题 编辑: 这是我的部分代码 private void SetDragCursor() {
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()方法。当我在调试器中一步一步地遍历每一行代码时,鼠标在进入drag-leave处理程序后立即从no-cursor变为drag-cursor。这就是为什么我认为它必须是系统
如果它确实是系统,那么如果我能够捕获事件触发,我就可以自己处理这些事件,而不是让它冒泡通过
谢谢大家! 只是工作方式不同,在DragOver事件期间设置光标的方法如下:
void listView__DragOver(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent("Images"))
{
e.Effects = DragDropEffects.None;
e.Handled = true;
}
}
根据指定给e.Effects
的DragDropEffects枚举值,鼠标将更改光标
不要调用
鼠标。因为这不是正确的方法。错误的方法。如果使用事件,则光标将在两者之间快速闪烁。你在“设置我的鼠标”中做错了什么,这可能是不必要的。邮政编码,看到了吗?这里可能有一些关于游标的相关信息…@Lin:不在乎游标在调试过程中是如何变化的。啊,在我没有将handled设置为true之前,这是可行的,所以我猜是其他东西修改了它。但是,在拖动过程中,我的光标仍偶尔闪烁。我还发现,更改AllowDrop属性也会更改光标,但这会使我无法与不允许拖放的项目交互。我需要在DragOver事件处理程序期间与该项交互,因此将AllowDrop设置为false不是我的选项。有没有其他方法可以更改光标,或者有没有方法可以使光标停止闪烁?谢谢