2009-09-27 37 views
1

我試圖添加複製/粘貼到編輯項目的應用程序。擁有一組選定項目的數據副本應能夠複製它們或將它們傳輸到另一個程序實例。我已經試過這樣:爲什麼System.Windows.Forms.Clipboard.GetData/SetData不起作用?

const string MyClipboardFormat = "MyClipboardFormat" 

private void copyToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    XmlDocument xdoc; 
    //add data of selected items 
    Clipboard.SetData(MyClipboardFormat,xdoc); 
} 

private void pasteToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    XmlDocument xdoc = Clipboard.GetData(MyClipboardFormat) as XmlDocument; 
    if (xdoc == null) 
    throw new Exception("Clipboard does not contain MyClipboardFormat"); 
    //read item data from xdoc 
} 

我GOOGLE了,但發現只有使用GetDataObject/SetDataObject比特,相當於這似乎反正是想,如果我使用反射來尋找什麼的GetData/SetData的一樣。

我應該在某處註冊剪貼板格式字符串嗎?

回答

2

我也有類似的問題,並得到它的工作,我不得不把它放在剪貼板之前序列化對象,我呼籲Clipboard.GetData()

1

您需要註冊您的格式。使用DataFormats.GeTFormat(MyClipboardFormat)

調用此方法與自己的格式 名稱創建一個新的剪貼板格式 類型。如果指定的格式不存在 ,則此方法將使用 Windows註冊表將 名稱註冊爲剪貼板格式,並獲取唯一的 格式標識符。

+0

都能跟得上後反序列化它,這並未」幫助。我甚至不確定如何處理'格式'在這裏返回。 GetData/SetData將一個字符串作爲格式描述符。 – 2009-09-28 08:26:01