wpf - DoDragDrop() - droptarget 是另一个应用程序(word 或 excel)

标签 wpf drag-and-drop ms-word cursor

在我的 WPF 应用程序中,我实现了拖放并将我的 PNG 图像放在 DataObject 中,然后将其传递给 DoDragDrop 方法。关于我可以放弃哪些应用程序,这似乎是偶然的。 Excel yes, Word no.

我在这里寻找是否有一种方法可以检查目标应用程序 (MS Word) 是否会接受被拖动到它的对象。目前图像看起来像是被拖动了,但 Word 没有对它执行任何操作。从 Excel 拖动到 Word 时,我会看到一个红色图标,表示拖动不起作用,如果我的拖动不起作用(如果可能),我需要显示相同的图标。

我所有的文章似乎都表明 DropTarget 隐含了 DragOver 和反馈事件,而不是我的应用程序作为 DragSource?这是正确的还是我可以使用这些事件来检查 DropTarget?

奇怪的是,Word 不接受我的图像,但 Excel 可以。是否有其他更强大的拖放方式?

感谢您的协助。

最佳答案

Excel 中的拖放功能看起来非常糟糕,至少在我的版本(2013 年)中是这样。例如,它不会接受从资源管理器中拖出的文件,否则会产生大量的绘画瑕疵并掉落在错误的位置。但真正起作用的是拖动位图对象。

要使其同时适用于 Excel 和 Word,您需要指定多种格式。这段 Winforms 测试代码运行良好,使用了 Pictures 文件夹中名为“transparent.png”的示例图像。根据需要进行调整以在 WPF 中拖动您自己的图像文件:

    private void Form1_MouseDown(object sender, MouseEventArgs e) {
        string path = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
        path = System.IO.Path.Combine(path, "transparent.png");
        using (var bmp = new Bitmap(path)) {
            var data = new DataObject();
            var files = new System.Collections.Specialized.StringCollection();
            files.Add(path);
            data.SetFileDropList(files);   // This format works in Word
            data.SetImage(bmp);            // This format works in Excel
            DoDragDrop(data, DragDropEffects.Copy);
        }
    }

关于wpf - DoDragDrop() - droptarget 是另一个应用程序(word 或 excel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345440/

相关文章:

wpf - 防止控件迫使 parent 调整大小

wpf - 确定是否继承了 WPF DependencyProperty 值

Java SWT 表查看器。只允许 Entry 作为 DropTarget

python - 使用 Perl/Batch/Python 更新 MS Word 文档的详细信息 "content status"

c# - 使用 Word 2007 作为 CMS 页面编辑器

c# - VU Meter 像 Windows 音量混合器

c# - WPF DataGrid中如何通过DataGrid Header CheckBox选中一列的所有CheckBox

android - 拖放 Android Gallery 图片

c# - PictureBox-Control 的拖放支持

c# Interop Word 文档添加样式