c# - 以不同格式复制和粘贴

标签 c#

我有一个数据网格,我希望能够将其复制并粘贴到 Excel 中或从中复制粘贴。很常见的场景。我实现了复制和粘贴功能。但是,此应用程序有多个数据网格,我想阻止用户尝试将数据从一个网格复制到另一个网格,因为数据不同。

我可以将这些网格中的对象序列化为我想要的任何格式,因此添加某种表示“此数据仅进入该网格”的元数据是微不足道的。但我无法添加元数据,因为那样它会显示在 excel 中。这个问题是否有一些解决方案允许我在我的应用程序中以一种格式粘贴数据,但 excel 仍能正确处理?

最佳答案

如果您查看 clipboard class您可以设置文本,但您还可以使用它做更多的事情。您希望对剪贴板执行的大多数高级操作都围绕一对例程“SetDataObject”和“GetDataObject”展开。要将其用于多种格式,您可以指定:

var serializableObject = new MyObject();

var clipData = new DataObject();
clipData.SetData(DataFormats.Text, "abcdefg");
clipData.SetData("CustomFormat", serializableObject);
Clipboard.SetDataObject(data);

完成此操作后,您可以通过反转此操作并从自定义格式请求数据来从剪贴板取回数据。简而言之,反向调用如下所示:

var clipData = (DataObject)Clipboard.GetDataObject();
var myObject = clipData.GetData("CustomFormat") as MyObject;

有关 Microsoft 的更完整示例,请参阅此页面:http://msdn.microsoft.com/en-us/library/637ys738(v=vs.110).aspx .看看底部,它解释了多种格式的使用。

希望这对您有所帮助。祝你好运!

关于c# - 以不同格式复制和粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21418312/

相关文章:

c# - 帮助使用 FluentNHibernate 创建 ColumnName 约定

c# - SQLiteConnection 是否在事务内部处理?

c# - 将复杂的json转换为c#类

c# - 如何以最少的访问量(最有效)从位置FIFO中选择项目

c# - 如何列出实现抽象类和接口(interface)(C#)的东西?

c# - 该变量未声明或从未分配警告

c# - 手动调用 Visual Studio 的可视化工具

C# 使用 QuickGraph 和 GraphViz 绘制图形

c# - Microsoft.AspNet.Identity.Core 和 Microsoft.AspNetCore.Identity 之间有什么区别?

c# - 如何将类型传递给方法?