wpf - System.Windows.Clipboard 和 System.Windows.Forms.Clipboard 之间有区别吗?

标签 wpf clipboard

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/

相关文章:

c# - 剪贴板 + PresentationFramework = OutOfMemoryException?

c# - Visual Studio 设置 : How to set vertical split view to default

c# - WPF 控制台应用程序在完成后不会返回提示

c# - WPF - 创建颜色网格

javascript - 如何使用javascript将选定的文本复制到剪贴板

java - 从剪贴板匹配反斜杠 (\) 时出错

wpf - 是否可以在 WPF 和 Silverlight 中开发一个应用程序?

c# - 如何迭代 LibraryStack 中的元素?

c++ - 通过 C++ 与 OS 函数交互

从网站复制部分后的 Javascript 剪贴板操作