从剪贴板中检索复制的文本

时间:2012-08-23 11:48:09

标签: c#

我正在尝试检索复制到剪贴板的文本,但文本永远不会被检索。

我正在使用这段代码:

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

现在这个条件永远不会返回true,这意味着剪贴板永远不会包含任何文本,尽管我将几段文本复制到剪贴板。

我也尝试了这个代码,它也是一样的:

   IDataObject iData = Clipboard.GetDataObject();

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

2 个答案:

答案 0 :(得分:1)

您在包含中指定格式,此处为带有html数据的示例

使用ContainsDataGetText

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

答案 1 :(得分:0)

或者你可以使用;

    static string clipHTML { get; set; } 

    public yourclass()
    {

    clipHTML = Clipboard.GetText(TextDataFormat.Html);

    }

根据您使用的.NET Framework,您可能会在下面发出警告。

DataFormats.Html specification表示它以UTF-8编码。但是.NET 4 Framework中存在一个较低的错误,它实际上读作UTF-8为 Windows-1252

你会得到一些错误的编码,导致有趣/不好的角色如 'A', 'A€¹','A ' 'å½', 'Å¡',' A '“, '¾', 'A', '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:创建翻译词典并搜索和替换。