c# - 移出 WPF 窗口时 WPF 拖放 DragDropEffects 发生变化
问题描述
我有一个 WPF 应用程序,我在其中拖动一个文件对象。它可以拖放到应用程序内部的几个窗口中,也可以从外部拖放到资源管理器中,然后放到桌面和其他一些地方。
拖放操作工作正常,但 DragDropEffect 仅在应用程序窗口内正确显示。当光标移出应用程序窗口时,我会看到“verboten”图标 - 大多数情况下。取决于光标在大多数情况下离开应用程序的方式,我得到了斜线圆圈。但有时它会正确地继续拖动复制图标。
var files = new[] {editor.MarkdownDocument.Filename} ;
var dragData = new DataObject(DataFormats.FileDrop,files);
DragDrop.DoDragDrop(tab, dragData, DragDropEffects.Copy);
如前所述,shell 的代码和处理工作正常 - 文件被复制,只有拖动图标才是问题所在。
我可以控制应用程序内部的拖动图标,在窗口上没有问题,但我无法控制在它之外发生的事情。
那么如何在 WPF 外部可靠地控制拖动图标呢?
解决方案
https://docs.microsoft.com/en-us/dotnet/api/system.windows.dragdrop.givefeedback
DragDrop.GiveFeedback += SetTheCursorHere;
您应该(根据 Microsoft 的文档)缓存光标等,因为在拖动时会一遍又一遍地调用它,并且您不想在拖动时加载资源。
推荐阅读
- mysql - 按 SELECT 子查询的最后一行排序
- java - 给定两个大素数,我如何使用 java 获取 tor 洋葱地址
- javascript - Javascript ajax 全局变量未定义
- android - 如何从 Firebase 中的所有键中检索数据?
- css - Drupal 8 Subtheme css 在 Edge 中不起作用
- android - ~/.emulator_console_auth_token 来自哪里?
- android - 忽略 TTS 语言环境
- actionscript-3 - 视频监听器不会自动返回菜单
- ios - 只有当 iPhone 连接到系统(任何操作系统:Windows、Mac 或 Ubuntu)时才会执行后台任务,否则不会执行
- javascript - 正则表达式:将 HTML 转换为 JSON 格式