0

我正在尝试检索复制到剪贴板的文本,但从未检索到文本。

我正在使用这段代码:

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

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

我也试过这段代码,它是一样的:

   IDataObject iData = Clipboard.GetDataObject();

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

2 回答 2

1

您在包含中指定格式,这里是带有 html 数据的示例

使用ContainsDataGetText

     bool IsHTMLDataOnClipboard = Clipboard.ContainsData(DataFormats.Html);
     string htmlData;
     if(IsHTMLDataOnClipboard)
     {
         htmlData = Clipboard.GetText(TextDataFormat.Html);
     }
于 2012-08-23T11:52:41.713 回答
1

或者你可以使用;

    static string clipHTML { get; set; } 

    public yourclass()
    {

    clipHTML = Clipboard.GetText(TextDataFormat.Html);

    }

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

DataFormats.Html 规范声明它以 UTF-8 编码。但是 .NET 4 Framework 及更低版本中存在一个错误,它实际上读取为 UTF-8 和Windows-1252

你得到分配错误的编码,这会导致有趣/坏的字符,例如'Å','‹','Å'','Ž','Å¡','Å“','ž',' Ÿ','Â','¡','¢','£','¤','Â¥','¦','§','¨',' ©'

例如,“€”在 Windows-1252 中被错误地编码为“€”。

在这个专门的网站上的完整解释 调试图表将 Windows-1252 字符映射到 UTF-8 字节到 Latin-1 字符

但是通过使用转换表,您不会丢失任何 UTF-8 字符。您可以从 DataFormats.Html 获取原始的原始 UTF-8 字符。(注意:Ppm 解决方案默认为 ASCII 并且您会丢失信息)

Soln:创建翻译词典并进行搜索和替换。

于 2016-06-29T20:40:52.223 回答