加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 20:58:35 所属栏目:百科 来源:网络整理
导读:参见英文答案 How to set HTML to clipboard in C#?????????????????????????????????????4个 我注意到许多应用程序根据目标应用程序进行不同的复制和粘贴.例如,如果我在TFS中(在Web界面中)“HTML复制”一个项目: 如果我将它粘贴在记事本中,我会得到类似csv
参见英文答案 > 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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读