This question already has answers here:
How to set HTML to clipboard in C#?
(4个答案)
3年前关闭。
我注意到,许多应用程序根据目标应用程序进行不同的复制和粘贴。例如,如果我“ HTML复制” TFS中的一个项目(在Web界面中):
如果将其粘贴到记事本中,则会得到类似csv的输出
如果将其粘贴到Excel中,则会得到格式正确的行和列
如果我将其粘贴到Outlook中,则会得到一个漂亮的表格
我尝试使用具有不同
到目前为止我尝试过的是:
(4个答案)
3年前关闭。
我注意到,许多应用程序根据目标应用程序进行不同的复制和粘贴。例如,如果我“ HTML复制” TFS中的一个项目(在Web界面中):
如果将其粘贴到记事本中,则会得到类似csv的输出
如果将其粘贴到Excel中,则会得到格式正确的行和列
如果我将其粘贴到Outlook中,则会得到一个漂亮的表格
我尝试使用具有不同
Clipboard.SetText(String, TextDataFormat)
值的TextDataFormat
的多个实例,但是可惜,它们彼此覆盖(除了TextDataFormat.Text
之外的任何东西似乎都无法“允许”粘贴)。到目前为止我尝试过的是:
private static void KeyPressed(KeyEventArgs e, GridView grid)
{
if (e.Control && e.KeyCode == Keys.C)
{
var textContent = new StringBuilder();
var htmlContent = new StringBuilder("<table>");
// build content
for (int i = 0; i < 10; i++)
{
htmlContent.AppendFormat("<tr><td>{0}</td></tr>", i);
textContent.AppendFormat("{0}\t", i);
}
textContent.Length--; // remove last tab
htmlContent.Append("</table>");
// send contents to clipboard
Clipboard.Clear();
Clipboard.SetText(textContent.ToString(), TextDataFormat.CommaSeparatedValue);
Clipboard.SetText(textContent.ToString(), TextDataFormat.Text);
Clipboard.SetText(htmlContent.ToString(), TextDataFormat.Html);
e.Handled = true;
e.SuppressKeyPress = true;
}
}
最佳答案
我认为您可能只需要以下内容:
var dataObject = new DataObject(textContent); // allows data to auto-convert on paste
Clipboard.SetDataObject(dataObject);