質問

Html形式を作成したいのですが、MSDNの簡単な例を使用して動作させることさえできません。

http://msdn.microsoft.com/en-us/library /tbfb3z56.aspx

このコンソールアプリ(クリップボードラウンドトリッパー)は誰でも使用できますか?

using System;
using System.Windows; //Need to add a PresentationCore or System.Windows.Forms reference

class Program {
    [STAThread]
    static void Main( string[] args ) {
        Console.WriteLine( "Copy a small amount of text from a browser, then press enter." );
        Console.ReadLine();

        var text = Clipboard.GetText();
        Console.WriteLine();
        Console.WriteLine( "--->The clipboard as Text:" );
        Console.WriteLine( text );

        Console.WriteLine();
        Console.WriteLine( "--->Rewriting clipboard with the same CF_HTML data." );
        //***Here is the problem code***
        var html = Clipboard.GetText( TextDataFormat.Html );
        Clipboard.Clear();
        Clipboard.SetText( html, TextDataFormat.Html );

        var text2 = Clipboard.GetText();
        Console.WriteLine();
        Console.WriteLine( "--->The clipboard as Text:" );
        Console.WriteLine( text2 );

        var isSameText = ( text == text2 );
        Console.WriteLine();
        Console.WriteLine( isSameText ? "Success" : "Failure" );

        Console.WriteLine();
        Console.WriteLine( "Press enter to exit." );
        Console.ReadLine();
    }
}
役に立ちましたか?

解決

ブラウザからデータをクリップボードにコピーすると、テキストとHTMLの両方を含む複数の形式で同じデータがクリップボードにコピーされます。そのため、テキストまたはHTML形式でデータを読み戻すことができます。ただし、ここでSetTextを呼び出すと、HTML形式でのみ渡されるため、通常のGetTextを使用すると、クリップボードにテキストバージョンがなく、nullが返されます。

IDataObjectを使用して、複数のフォーマットを一度にクリップボード(つまり、テキストとHTMLの両方)に配置できますが、データをクリップボードに配置する前に、フォーマット間の変換を自分で行う必要があります。 IDataObject こちらを使用する方法の例があります。

他のヒント

機能しないことを再現できます... var text2 = Clipboard.GetText();は毎回""を返します...

(編集) クイック検索では、 this が得られますが、トピックについて。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top