参见英文答案 >
How to set HTML to clipboard in C#? 4个
我注意到许多应用程序根据目标应用程序进行不同的复制和粘贴.例如,如果我在TFS中(在Web界面中)“HTML复制”一个项目:
我注意到许多应用程序根据目标应用程序进行不同的复制和粘贴.例如,如果我在TFS中(在Web界面中)“HTML复制”一个项目:
>如果我将它粘贴在记事本中,我会得到类似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; } }
解决方法
我想你可能只需要以下内容:
var dataObject = new DataObject(textContent); // allows data to auto-convert on paste Clipboard.SetDataObject(dataObject);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。