2

Html 形式を書きたいのですが、単純な MSDN の例でさえ動作しません。

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

クリップボード ラウンド トリッパーであるこのコンソール アプリは、誰にとっても機能しますか?

システムを使用する;
System.Windows を使用します。//PresentationCore または System.Windows.Forms 参照を追加する必要があります

クラス プログラム {
    [スタスレッド]
    static void Main( string[] args ) {
        Console.WriteLine( "ブラウザーから少量のテキストをコピーし、Enter キーを押します。" );
        Console.ReadLine();

        var text = Clipboard.GetText();
        Console.WriteLine();
        Console.WriteLine( "--->テキストとしてのクリップボード:" );
        Console.WriteLine( テキスト );

        Console.WriteLine();
        Console.WriteLine( "--->同じ CF_HTML データでクリップボードを書き換えます。" );
        //***これが問題のコードです***
        var html = Clipboard.GetText( TextDataFormat.Html );
        クリップボード.クリア();
        Clipboard.SetText( html, TextDataFormat.Html );

        var text2 = Clipboard.GetText();
        Console.WriteLine();
        Console.WriteLine( "--->テキストとしてのクリップボード:" );
        Console.WriteLine( text2 );

        var isSameText = (テキスト == テキスト 2 );
        Console.WriteLine();
        Console.WriteLine( isSameText ? "成功" : "失敗" );

        Console.WriteLine();
        Console.WriteLine( "Enter キーを押して終了します。" );
        Console.ReadLine();
    }
}
4

2 に答える 2

3

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

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

于 2008-12-06T23:34:26.513 に答える
0

うまくいかないことを再現できます...毎回var text2 = Clipboard.GetText();返品...""

(編集) クイック検索でthisが得られ、話題になっているようです。

于 2008-12-06T23:22:23.697 に答える