当我在wpf listview中拖动鼠标时,我正试图在某个点改变我的鼠标光标。但是,当我设置鼠标时,它会被其他东西快速覆盖,并更改回拖动光标。
我不确定光标更改的来源,肯定不是来自我的代码,所以它必须是系统。如果是系统,那么我必须截取事件以进行光标更改,并处理事件以便光标显示我想要的内容吗?
那么这个Control.CursorChanged事件的WPF是否等效?或许还有其他方法来解决这个问题?
编辑:
这是我的代码的一部分
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()方法。当我一步一步地遍历调试器中的每行代码时,鼠标在进入拖动离开处理程序后立即从无光标转向拖动光标。这就是为什么我认为它必须是系统。
如果它确实是系统,那么如果我可以捕获事件触发,那么我可以自己处理这些事件,而不是让它冒泡。
谢谢!
答案 0 :(得分:1)
就是这样不起作用,在DragOver事件期间设置光标的方法如下:
void listView__DragOver(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent("Images"))
{
e.Effects = DragDropEffects.None;
e.Handled = true;
}
}
根据您分配给e.Effects
的DragDropEffects枚举值,鼠标将更改光标。
不要拨打Mouse.OverrideCursor
,因为这不是正确的方式。