微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 根据目标自定义复制/粘贴的内容

参见英文答案 > How to set HTML to clipboard in C#?                                    4个
我注意到许多应用程序根据目标应用程序进行不同的复制和粘贴.例如,如果我在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] 举报,一经查实,本站将立刻删除。

相关推荐