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

Mar*_*eIV 10 wpf clipboard

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

System.Windows.Forms版本的文档明确指出,要在剪贴板上存储对象,它必须是可序列化的,并且您的应用程序必须具有STA模型,但System.Windows版本的文档不会列为要求.是吗?为什么有两节课?有什么不同?

如果它很重要,我们的应用程序是WPF,是的,我知道前者适用于WPF,后者适用于Windows.Forms ......但为什么呢?为什么不总是使用System.Windows版本,即使是基于表单的应用程序,因为它只是一个参考,并且在使用中限制较少,而对象只是.NET中的一个对象.

Bol*_*ock 6

简单:( 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不同.

  • 虽然是的,我知道您应该在各自的平台上使用它们,但这并不能解释其中的差异,也不能解释为什么一侧有限制而另一侧没有,但它们正在与同一个基于 COM 的剪贴板进行通信。这就是我想知道的。例如,由于 System.Windows 版本的限制似乎要少得多,为什么 Windows 窗体应用程序也不使用该版本呢? (2认同)