2008-12-06 2 views
1

Я хочу написать Html-формат, но я не могу даже получить простой пример MSDN для его работы.Невозможно округлить html-формат в буфер обмена

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(); 
    } 
} 

ответ

2

Когда вы копируете данные из браузера в буфер обмена, он помещает те же данные в буфер обмена в нескольких форматах, включая текст и HTML. Таким образом, вы можете читать данные в текстовом или HTML-формате. Однако, когда вы вызываете SetText здесь, вы ТОЛЬКО переходите в формате HTML, поэтому, когда вы используете обычный GetText, текстовой версии в буфере обмена нет и вы возвращаете нуль.

Вы можете поместить несколько форматов в буфер обмена одновременно (например, текст и HTML) с помощью IDataObject, но перед отправкой данных в буфер обмена вам необходимо сделать перевод между форматами. Ниже приведен пример использования IDataObject here.

0

я могу воспроизвести, что он не работает ... то var text2 = Clipboard.GetText(); возвращает "" каждый раз ...

(редактировать) быстрый поиск дает this, который кажется на тему.

+0

Спасибо за тестирование. Я также попробовал код вашей ссылки. Я не мог заставить это работать. – jyoung 2008-12-06 23:38:34