【问题标题】:Changing cursor when dragging over target拖动目标时更改光标
【发布时间】:2018-08-06 21:40:22
【问题描述】:

我已经创建了自定义 WPF 工具箱控件。我已经实现了拖放功能,该功能按预期工作,但是当我将鼠标(拖动数据)移动到放置目标上时,鼠标光标显示为无法完成此操作,尽管代码执行并且工作正常。 (here 你可以看到光标在目标上拖动时的样子)。我曾尝试关注目标OnDragEvent:

  • Mouse.OverrideCursor = Cursors.Hand; 在这种情况下,光标只变化 1/1000 秒,然后又变回上图中可以看到的那个。
  • Cursor.Current = Cursors.Hand; 这也不起作用。

【问题讨论】:

  • 您的表单/面板/控件(无论屏幕截图的背景是什么)是否指定AllowDrop=true
  • 是的,确实如此。
  • 你能分享你处理拖放机制的代码片段吗?还有您尝试手动设置光标的部分?
  • prnt.sc/kfbbnn 这就是我开始拖放操作的方式。目标元素被命名为内容(这是一个自定义控件),这就是我处理 dragEnter 事件的方式:prnt.sc/kfbdcr。我使用 control.DragEnter += new DragEventHandler(OnDragEnter); 绑定它
  • 您在另一条评论中说您正在包装整个控件。您的包装器是否也定义了AllowDrop-Property?如果是,您能否向我们展示控件的层次结构?喜欢Form(Panel(...))?您如何以及何时“重置”光标?你在其他方法调用中设置了吗?

标签: c# wpf


【解决方案1】:

注意你需要在拖放的情况下实现一些事件我建议查看以下链接我认为它会很有用并解决你的问题。

drag amp drop in wpf explained end to end

【讨论】:

  • 在 GiveFeedbackEvent 中更改光标有帮助。非常感谢!
【解决方案2】:

你用过DoDragDrop吗?

你可以将 Effect 设置为第三个参数:

DragDrop.DoDragDrop(drg, dragData, DragDropEffects.Move);

【讨论】:

  • 我确实使用了 DoDragDrop。另外,我已经完全按照你所说的设置了第三个参数,它仍然是一样的。
【解决方案3】:

也许这会有所帮助: 我有两个 Canvas,其中一个拿着一个按钮:

<Canvas 
   HorizontalAlignment="Left" 
   Height="225" 
   Margin="270,10,0,0" 
   VerticalAlignment="Top" 
   Width="237" 
   PreviewMouseMove="Canvas_PreviewMouseMove">
   <Button 
      Content="Button" 
      Canvas.Left="65" 
      Canvas.Top="65" 
      Width="75"/>
</Canvas>
<Canvas 
   HorizontalAlignment="Left" 
   Height="225" 
   Margin="20,10,0,0"   
   VerticalAlignment="Top" 
   Width="245" 
   AllowDrop="True" 
   Background="Black"
 />

这在 PreviewMouseEvent 中:

private static readonly string ident = "test";
private void Canvas_PreviewMouseMove(object sender, MouseEventArgs e)
{
  DataObject dragData = new DataObject(ident, ((Canvas)sender));
  DragDrop.DoDragDrop((Canvas)sender, dragData, DragDropEffects.Move);
}

设置背景色时,您可以在此处获得移动效果,如果未设置颜色,则不会获得移动效果。也许这是你的问题。 (UserControls 的行为相同)

【讨论】:

  • 我已经遇到过这种问题。事件没有在整个控件上触发,这就是为什么我必须包装它并将包装器背景设置为透明。它解决了事件问题,但遗憾的是,这不是我新问题的解决方案。
猜你喜欢
  • 2013-04-21
  • 1970-01-01
  • 2012-04-24
  • 2013-01-30
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 2020-12-18
  • 2011-06-24
相关资源
最近更新 更多