【发布时间】:2019-06-06 03:04:55
【问题描述】:
我有一个 WPF 应用程序,我在其中拖动一个文件对象。它可以拖放到应用程序内部的多个窗口中,也可以从外部拖放到资源管理器中,然后放到桌面和其他一些地方。
拖放操作工作正常,但 DragDropEffect 仅在应用程序窗口内正确显示。当光标移出应用程序窗口时,我会看到“verboten”图标 - 大多数情况下。根据光标在大多数情况下离开应用程序的方式,我得到了斜线圆圈。但有时它会正确地继续拖动复制图标。
var files = new[] {editor.MarkdownDocument.Filename} ;
var dragData = new DataObject(DataFormats.FileDrop,files);
DragDrop.DoDragDrop(tab, dragData, DragDropEffects.Copy);
如前所述,shell 的代码和处理工作正常 - 文件被复制,问题只是拖动图标。
我可以控制应用程序内部的拖动图标,在窗口上没有问题,但我无法控制在它之外发生的事情。
那么如何在 WPF 外部可靠地控制拖动图标?
【问题讨论】:
-
会不会和UAC有关?不同 UAC 级别的两个应用程序无法通话。因此,如果您以管理员身份运行 WPF 应用程序,并且您的资源管理器受到限制(默认),D&D 将无法工作。
-
在这种情况下不是 - 一切都在用户模式下运行。我注意到,尽管 Windows 在某些情况下无法正确显示拖动图标,但在 everywhere 中拖放会做一些奇怪的事情。不太一样。重新启动,现在看到更多不同奇怪的东西。现在想知道 Windows 本身是否存在导致这一切的问题。
-
也许某些第 3 方软件在 Shell 中玩得很奇怪?我会检查将哪些 .dll 加载到 explorer.exe 中(例如使用 sysinternals 的 procexp 或 autoruns 工具)
标签: c# wpf drag-and-drop