3

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

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

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

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

感谢你的协助。

4

1 回答 1

3

Excel 中的 Drag+Drop 看起来非常糟糕,至少在我的版本 (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);
        }
    }
于 2013-01-18T13:39:44.473 回答