拖放操作和剪贴板支持

可以通过处理一系列事件(尤其是 DragEnterDragLeaveDragDrop 事件)在基于 Windows 的应用程序中启用用户拖放操作。

你还可以通过简单的方法调用,在基于 Windows 的应用程序中实现用户剪切/复制/粘贴支持和用户数据传输到剪贴板。

.NET 10 兼容性

从 .NET 9 开始, BinaryFormatter 由于安全漏洞,已从运行时中删除。 此删除中断了自定义对象的剪贴板和拖放操作,导致 Windows 窗体应用程序在功能上出现了差距。

.NET 10 通过引入新的 API 来解决此问题,这些 API 可还原剪贴板和拖放功能,同时提高安全性、错误处理和跨进程兼容性。 这些 API 使用 JSON 序列化,并提供用于数据操作的类型安全方法。

.NET 10 的主要改进包括:

  • 使用提供更好的错误处理的方法进行TryGetData<T>()
  • 使用方法的自定义类型的 SetDataAsJson<T>()
  • 对常见数据类型的内置支持,无需二进制序列化。

有关更新应用程序的综合指南,请参阅 .NET 10 中的剪贴板和拖放更改

本节中

演练:在 Windows 窗体中执行拖放操作
说明如何启动拖放操作。

在应用程序之间执行拖放操作的方法
演示如何跨应用程序完成拖放操作。

如何:将数据添加到剪贴板
介绍如何以编程方式在剪贴板上插入信息,包括 .NET 10 中提供的新类型安全 API。

如何:从剪贴板检索数据
介绍如何使用旧方法和新的类型安全 TryGetData<T>() 方法访问剪贴板上存储的数据。

.NET 10 中的剪贴板和拖放更改
有关将剪贴板和拖放代码迁移到 .NET 10 新 API 的综合指南,以及了解删去 BinaryFormatter 的原因和作用。

Windows 窗体中的拖放功能
描述用于实现拖放行为的方法、事件和类。

QueryContinueDrag 阐述请求继续拖动操作的事件中的复杂情况。

DoDragDrop 描述启动拖动操作关键方法的复杂性。

Clipboard 另请参阅 如何:将数据发送到活动 MDI 子窗口