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

フォーマットは、Contains で指定します。ここでは、html データを含むサンプルを示します。

使用ContainsDataして GetText

     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 以前にはバグがあり、実際にはWindows-1252として UTF-8 として読み取られます。

間違ったエンコーディングが大量に発生し、'Å'、'‹'、'Å''、'Ž'、'Å¡'、'Å"'、'ž'、' などのおかしな/悪い文字が生成されます。 Ÿ','Â','¡','¢','£','¤','Â¥','¦','§','¨',' ©'

たとえば、'€' は、Windows-1252 では誤って '€' にエンコードされます。

完全な説明はこちらの専用 Web サイトにあります Debugging Chart Mapping Windows-1252 Characters to UTF-8 Bytes to Latin-1 Characters

ただし、変換テーブルを使用すると、UTF-8 文字が失われることはありません。DataFormats.Html から元の元の UTF-8 文字を取得できます。(注: このための Ppm ソリューションのデフォルトは ASCII であり、情報が失われます)

Soln: 翻訳辞書を作成し、検索して置換します。

于 2016-06-29T20:40:52.223 に答える