System.Windows.Clipboard 和 System.Windows.Forms.Clipboard 之间有区别吗?
System.Windows.Forms 版本的文档特别指出,要将对象存储在剪贴板上,它必须是可序列化的,并且您的应用程序必须具有 STA 模型,但 System.Windows 版本的文档并未列出要求。是吗?为什么有两个类(class)?有什么不同?
万一重要,我们的应用程序是 WPF,是的,我知道前者适用于 WPF,后者适用于 Windows.Forms ......但为什么呢?为什么不总是使用 System.Windows 版本,即使是基于表单的应用程序,考虑到它只是一个引用并且在使用时限制较少,并且对象只是 .NET 中的对象。
最佳答案
简单:System.Windows.Clipboard
(在 PresentationCore.dll 中)旨在与 WPF 一起使用,而 System.Windows.Forms.Clipboard
(在 System.Windows.Forms.dll 中)用于 Windows 窗体。
您经常会在两个程序集中遇到看似相同的类;这是因为 WPF 和 WinForms 基于完全不同的系统,许多框架 API 必须以不同的方式实现。我自己并没有真正使用过系统剪贴板,但我的猜测是它与 WinForms 与低级 Win32 API 的相对接近性有关。不过,我不确定。
由于您正在使用 WPF,您应该使用 System.Windows.Clipboard
,因为表面上 WPF 的实现与 WinForms 不同。
关于wpf - System.Windows.Clipboard 和 System.Windows.Forms.Clipboard 之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9972419/