【问题标题】:Copy and paste in different formats以不同格式复制和粘贴
【发布时间】:2014-02-20 12:03:19
【问题描述】:

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

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

【问题讨论】:

    标签: c#


    【解决方案1】:

    如果您查看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。只需看看底部解释了多种格式的使用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多