2014-11-24 74 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