我有一个要从中拖动 的NSView子类,因此我试图将其拖到查找器中并显示文件对象(例如,在桌面上)。 (我认为单词是拖动目标就可以了)。
我可以将各种数据类型拖放到其他应用程序(RTF,RTFD,TIFF)中,但是将文件拖到查找器中使我很吃力-我想知道是否有人能正常工作?
我在视图上有一组文本,图像和图标(代表文件)。我允许用户选择一些并拖动,或者仅单击图标/图像并拖动。拖动到textEdit窗口就可以了-我可以拖动文本,文本+文件,图像等。
我声明可以拖动的类型:
public override string[] WritablePasteboardTypes()
{
List<string> arr = new List<string> { NSPasteboard.NSPasteboard.NSPasteboardTypeTIFF, NSPasteboard.NSPasteboardTypeRTFD, NSPasteboard.NSPasteboardTypeRTF, NSPasteboard.NSPasteboardTypeTIFF, <my private type> };
return arr.ToArray();
}
然后我编写一个将数据复制到粘贴板的函数:
public override bool WriteSelectionToPasteboard(NSPasteboard pboard, string type) {
if (type == NSPasteboard.NSPasteboardTypeRTFD) {
... copy an RTFD version to the pasteboard ...
}
if (type == NSPasteboard.NSPasteboardTypeTIFF) {
... copy an TIFF image to the pasteboard ...
}
... etc
}
正如我提到的,这一切似乎都奏效。我可以成功地拖放/复制/粘贴到TextEdit和其他应用程序。
我希望能够将应用程序中的文件拖放到查找器中,并在桌面上创建文件。
我尝试过:
NSPasteboardNSPasteboardTypeFileUrl -Finder完全拒绝拖放(拖动图像显示十字图标) NSPasteboard.NSUrlType -Finder似乎可以接受,但是当您释放图标时,该图标会返回我的应用程序(即放置失败)。我可能将NSUrl数据的结构弄错了吗?
我似乎无法为 NSPasteboard.NSFileContentsType 构建数据。 使用 NSPasteboard.NSFilesPromiseType 会导致我的应用严重崩溃(有时必须重新启动)。这是新的,几乎没有文档,当然也没有C#示例。这似乎是前进的“正确”方法。
有人有一些将对象拖到应该变成文件的对象的工作示例吗?
非常感谢。 保罗。