在 C 语言中将多个图像和文本复制和粘贴到剪贴板或从剪贴板复制和粘贴#

Copying and Pasting Multiple Images and Text to/from Clipboard in C#

提问人:tomato bar 提问时间:11/12/2023 更新时间:11/12/2023 访问量:45

问:

我正在开发一个 C# 应用程序,我需要实现将多个图像以及关联的文本复制和粘贴到剪贴板或从剪贴板复制和粘贴的功能。目前,我正在使用 Clipboard.SetDataObject 方法来存储单个图像和文本,但我不确定如何扩展它以支持多个项目。

这是我当前代码的简化版本:

// Code for copying to clipboard
private void CopyToClipboard()
{
    Image image = GetImage(); // A method to get the image
    string text = GetText(); // A method to get the text

    DataObject dataObject = new DataObject();
    dataObject.SetData(DataFormats.Bitmap, true, image);
    dataObject.SetData(DataFormats.Text, text);

    Clipboard.SetDataObject(dataObject, true);
}

如何修改代码以支持将图像列表和关联文本复制和粘贴到剪贴板或从剪贴板复制和粘贴? 是否有推荐的格式或序列化方法用于在剪贴板中存储多个图像和文本? 我应该如何调整 CopyToClipboard 和相应的 PasteFromClipboard 方法来处理这种情况? 感谢您提供的任何指导或示例。谢谢!

C# .NET 图像 剪贴板

评论

1赞 Jesse 11/12/2023
我假设你在这里使用的是 Windows。简短的回答:你不能。长答案:剪贴板一次只能保存一张图像。有一些卡顿的方法,比如你要将所有图像转换为 base64 并将其全部保存为文本,或者甚至只是将所有图像的字节组合并保存。但是,这些要求您还控制要粘贴到的任何内容,如果是这种情况,最好只存储文件路径而不是实际图像。或者,可以在 Windows 中为外部解决方案启用剪贴板历史记录。
0赞 tomato bar 11/12/2023
感谢您的评论!我敢打赌,最好的方法是另存为文本一。

答:

0赞 Morteza 11/12/2023 #1

更好的想法是将项目存储在应用程序中(在数据库或类似文件的东西中)并将它们显示给用户。当用户选择其中之一时,您可以将该项目设置为剪贴板。这就是剪贴板管理器的工作方式,就像 Ditto 一样