gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:21:14 26 4
gpt4 key购买 nike

在我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com