2012-08-23 52 views
-1

我試圖檢索文本複製到剪貼板,但文本永遠不會被檢索。從剪貼板檢索複製的文本

我使用這段代碼:

if (Clipboard.ContainsText()) 
{        
    text = Clipboard.GetText(); 
} 

現在這種情況永遠不會返回true,這意味着剪貼板從來沒有包含任何文字,但我複製了幾件文本複製到剪貼板中。

我也試過這個代碼也和它是相同的:

IDataObject iData = Clipboard.GetDataObject(); 

    if (iData != null && iData.GetDataPresent(DataFormats.Text)) 
    { 
     text = (String)iData.GetData(DataFormats.Text); 
    } 

回答

0

您指定格式的包含,這裏的HTML數據的樣本

使用ContainsDataGetText

 bool IsHTMLDataOnClipboard = Clipboard.ContainsData(DataFormats.Html); 
    string htmlData; 
    if(IsHTMLDataOnClipboard) 
    { 
     htmlData = Clipboard.GetText(TextDataFormat.Html); 
    } 
+0

如果Clipboard.ContainsText()返回false它意味着它不包含任何格式的任何文本,我怎麼試過你的代碼和它的相同 – Stacker

+0

你必須適應你的格式堆棧器,我的代碼適用於html格式 –

0

或者你可以使用;

static string clipHTML { get; set; } 

    public yourclass() 
    { 

    clipHTML = Clipboard.GetText(TextDataFormat.Html); 

    } 

根據您使用的.NET Framework的不同,您可能會在下面發出警告。

DataFormats.Htmlspecification聲明它使用UTF-8編碼。但是.NET 4 Framework中存在一個錯誤,並且它實際上讀取爲UTF-8,如Windows-1252

您會得到錯誤編碼的分配,這會導致有趣/糟糕的字符,例如:「012」,「 '¾', 'A', 'A', '¡', 'A¢', 'A£', 'å¤', 'A¥', 'Â|', '§','A '','''

例如'€'在Windows-1252中被錯誤地編碼爲'¬¬'。這裏

充分說明這個專門網站 Debugging Chart Mapping Windows-1252 Characters to UTF-8 Bytes to Latin-1 Characters

但是,通過使用該conversions tables你不會丟失任何UTF-8字符。您可以從DataFormats.Html獲取最初的原始UTF-8字符。 (注意:Ppm解決方案默認爲這個&的ASCII默認信息)

Soln:創建翻譯字典並搜索和替換。