【发布时间】:2016-02-29 09:13:58
【问题描述】:
我注意到许多应用程序复制和粘贴的方式因目标应用程序而异。例如,如果我在 TFS 中“HTML 复制”一个项目(在 Web 界面中):
- 如果我将它粘贴到记事本中,我会得到类似 csv 的输出
- 如果我将其粘贴到 Excel 中,我会得到格式正确的行和列
- 如果我将它粘贴到 Outlook 中,我会得到一个漂亮的表格
我尝试使用具有不同TextDataFormat 值的Clipboard.SetText(String, 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;
}
}
【问题讨论】: