拖动目标时更改光标

时间:2018-08-06 12:36:05

标签: c# wpf

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

  • Mouse.OverrideCursor = Cursors.Hand;在这种情况下,光标仅改变大约1/1000秒,然后又变回上图所示的位置。
  • Cursor.Current = Cursors.Hand;也不起作用。

3 个答案:

答案 0 :(得分:0)

您使用DoDragDrop吗?

您可以将“效果”设置为第三个参数:

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

答案 1 :(得分:0)

也许这可以帮助: 我有两个画布,其中一个按住按钮:

<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);
}

在设置背景色时,您将获得“移动”效果,如果未设置颜色,则不会获得移动效果。也许这是你的问题。 (用户控件的行为相同)

答案 2 :(得分:0)

请小心,如果发生拖放操作,您需要实施一些事件。我建议您查看以下链接,我认为这将很有用并解决您的问题。

drag amp drop in wpf explained end to end