2014-01-28 28 views
2

我有一個datagrid,我希望能夠複製和粘貼到excel。很常見的情況。我已經實現了複製和粘貼功能。但是,這個應用程序有幾個數據網格,我想阻止用戶試圖將數據從一個網格複製到另一個網格,因爲數據是不同的。以不同的格式複製並粘貼

我可以將這些網格中的對象序列化爲我想要的任何格式,因此添加某種類型的元數據,指出「此數據只在該網格中」,這很簡單。但是我不能添加元數據,因爲它會顯示在Excel中。是否有解決這個問題的辦法,允許我在我的應用程序中以一種格式粘貼數據,但該excel仍然可以正確處理?

回答

5

如果你看看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; 

對於微軟更完整的示例,看到這個頁面:http://msdn.microsoft.com/en-us/library/637ys738(v=vs.110).aspx。只要看看它在哪裏解釋了多種格式的使用。

希望這會有所幫助。祝你好運!

+0

太棒了,謝謝! – ConditionRacer