本文介绍了C#/ WPF:我可以存储在剪贴板多于1类型?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以存储比剪贴板1型多吗?例如。像文本和放大器;图片。说,在一个文本编辑器,用户贴,他得到的文本,如果他像Photoshop中粘贴时,他得到的图像。我认为这是可能的,但我试过

Can I Store more than 1 type in the Clipboard? Eg. like Text & Image. say the user pastes in a text editor, he gets the text and if he pastes in something like photoshop, he gets the image. I thought it was possible but I tried

Clipboard.Clear();
Clipboard.SetText(img.DirectLink);

BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.UriSource = new Uri(img.DirectLink);
bitmapImage.EndInit();

Clipboard.SetImage(bitmapImage);

和我总是得到的图像

推荐答案

是的,这是可能的。主要的问题是,你正在使用清除剪贴板把数据(这就是为什么他们特别命名为设置...,而不是添加...)之前的方法。

Yes, it is possible. The main problem is, methods you are using clear clipboard before putting data (that's why in particular they named "Set..." instead of "Add...").

/的从MSDN描述:

Clipboard.SetText (WinForms) / Clipboard.SetText (WPF) description from MSDN:

(的WinForms):清除剪贴板,然后添加在文本或UnicodeText格式的文本数据,这取决于操作系统

但是,一个解决方案是比较容易的:

But a solution is relatively easy:

要放置多种格式的剪贴板数据,使用DataObject类或IDataObject实现。在多种格式剪贴板地方数据来最大化目标应用程序,其格式要求,你可能不知道,可以成功地检索数据的可能性。

检查MSDN的详细信息:

Check MSDN for details:


  • 的WinForms:的

WPF:

更新:

增加链接到WPF变种

要澄清@比约恩评论:

在MSDN页System.Windows.Clipboard.SetText()不声明剪贴板被清除,即使这似乎是如此

这两种方法(WPF /的WinForms)在内部调用的这样的行为是相似的(你可以检查的)。

Both methods (WPF/WinForms) internally calls to OleSetClipboard so behaviour is similar (you can check http://referencesource.microsoft.com/#q=Clipboard.SetText).

我也检查了控制台应用程序这两个变种(的WinForms / WPF),发现他们做同样的。

I also checked both variants (WinForms/WPF) in console app and found they do the same.

这篇关于C#/ WPF:我可以存储在剪贴板多于1类型?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 15:29