.NET 中两个剪贴板 类 各自的用途是什么?

What is the purpose of each of the two Clipboard classes in .NET?

为什么.NET提供两个剪贴板类:

System.Windows.ClipboardSystem.Windows.Forms.Clipboard?

这些 类 之间有显着差异吗?

System.Windows.Clipboard 用于 WPF 应用程序,而 System.Windows.Forms.Clipboard 用于 WinForms。

它们做同样的事情,只是出现了两次,因此 WPF 应用程序不需要添加对 System.Windows.Forms 的引用,反之亦然。

其次,System.Windows.Clipboard排在System.Windows.Forms.Clipboard之后。 System.Windows.Clipboard 存在于 不能 引用 System.Windows.Forms 的其他平台,例如 Silverlight

一个是WPF,另一个是Windows Forms。如果您查看 MSDN 页面,您会看到 System.Windows.Clipboard is in the PresentationCore.dll assembly (that's WPF), the other System.Windows.Forms.ClipboardSystem.Windows.Forms.dll 程序集中(也就是说,毫不奇怪,windows 形式)。

从本质上讲,它们都只是围绕调用 windows API(在 user32.dll 中)以操纵剪贴板的静态包装器。使用与您在应用程序中使用的技术相匹配的技术。这避免了将 System.Windows.Forms 导入您的 WPF 应用程序只是为了剪贴板或重新编写一堆 pinvoke 代码以直接在您自己的代码中点击 API 的需要。