2014-11-24 73 views
0

後是空的,我有以下控制檯程序:剪貼板設置文本

using System.Windows.Forms;  

[STAThread] 
public static void Main(string[] args) 
{ 
    var text = Clipboard.GetText(); 
    Console.WriteLine("Input Text: " + text); 
    Clipboard.SetText(text, TextDataFormat.Html); 
    Console.WriteLine("Output Text: " + Clipboard.GetText()); 
    Console.WriteLine("Press any key to exit."); 
    Console.ReadKey(); 
} 

輸入/輸出看起來是這樣的:

Input Text: <table><tr><td>Hello, world!</td></tr></table> 
Output Text: 
Exiting... 

所需的輸入/輸出應該是這樣的:

Input Text: <table><tr><td>Hello, world!</td></tr></table> 
Output Text: <table><tr><td>Hello, world!</td></tr></table> 
Exiting... 

基本上,我想要一個控制檯程序來將HTML數據存儲爲剪貼板中的純文本格式爲實際的HTML da ta並將其放回到剪貼板中,以便我可以將其直接粘貼到Outlook電子郵件中,並將其格式化爲表格而不是文本。但我不明白爲什麼Clipboard.SetText()調用是在剪貼板上消隱,而不是將文本放在剪貼板上的數據類型正確。如何更改我的程序以達到所需的輸出?

回答

0

明白了。顯然,即使Outlook使用HTML格式的消息格式,也不能將HTML粘貼到表格中並將其呈現爲表格。相反,您必須將純文本轉換爲RTF格式,然後將其粘貼到Outlook中。顯然在.NET中將HTML轉換爲RTF沒有很好的解決方案,您必須使用Windows窗體庫中的WebBrowser控件和RichTextBox。代碼如下:

[STAThread] 
public static void Main(string[] args) 
{ 
    //string input = "<table><tr><td>Hello, world!</td></tr></table>"; 
    string input = Clipboard.GetText(); 
    ConvertToRTF(input); 
    string text = Clipboard.GetText(TextDataFormat.Rtf); 
    Clipboard.SetText(text,TextDataFormat.Rtf); 
} 

public static void ConvertToRTF(string html) 
{ 
    RichTextBox rtbTemp = new RichTextBox(); 
    WebBrowser wb = new WebBrowser(); 
    wb.Navigate("about:blank"); 
    wb.Document.Write(html); 
    wb.Document.ExecCommand("SelectAll", false, null); 
    wb.Document.ExecCommand("Copy", false, null); 
    rtbTemp.SelectAll(); 
    rtbTemp.Paste(); 
    rtbTemp.Copy(); 
} 
2

使用gettext的other overload,因爲你是指定TextDataFormat

Clipboard.GetText(TextDataFormat.Html)) 
+0

在控制檯中獲得了所需的輸出。但是,當我將剪貼板粘貼到Outlook中的新電子郵件中時,它不會粘貼任何內容,但我希望它粘貼HTML表格。你知道我需要改變什麼,所以我可以將它作爲表格粘貼到Outlook電子郵件中嗎? – mason 2014-11-24 17:42:13

+0

如果您完全刪除「TextDataFormat」並使用「SetText(text)」和「GetText()」,該怎麼辦? – Jonesopolis 2014-11-24 17:45:12

+0

如果我不指定TextDataFormat,那麼它只是以純文本格式粘貼到Outlook中,而不是創建格式化表格。 – mason 2014-11-24 17:46:43