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

System.Windows.Forms版本的文档特别指出,要在剪贴板上存储对象,对象必须可序列化,并且您的应用程序必须具有STA模型,但是System.Windows版本的文档也未列出以下内容:要求。是吗?为什么要上两节课?有什么不同?

万一重要,我们的应用程序是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的实现不同。

08-25 13:14
查看更多