以生成 Microsoft Teams 可以使用的格式的方式在 C# 中写入剪贴板

问题描述

我有一个应用程序,可以将字符串以 30 pt 字体写入剪贴板,Courier New。下面的代码适用于 word、outlook,基本上任何接受 RTF 格式文本的东西。不幸的是,它在 Teams 中仅被视为纯文本,这是最常见的用例,也是迄今为止最重要的用例。有没有人知道如何以 MS Teams 能够识别的方式对其进行格式化?

private void Executecopy(String lap)
        {
            // Escape Special Characters for RTF
            StringBuilder rtf = new StringBuilder();
            StringBuilder html = new StringBuilder();
            html.Append("<p style = \"font - family:'Courier New'; font - size:30px\">");

            foreach (char c in lap)
            {
                rtf.Append(GetRtfEncoding(c));
                html.Append(c);
            }

            html.Append("</p>");

            // Add both RTF and plain Text into clipboard
            DataObject data = new DataObject();
            data.SetData(DataFormats.Text,lap);
            data.SetData(DataFormats.Rtf,@"{\rtf1\ansi\deff0 {\fonttbl {\f0 Courier New;}}\f0\fs60 " + rtf.ToString() + "}",true);
            data.SetData(DataFormats.Html,html,true);
            Clipboard.SetDataObject(data);
        }

解决方法

不幸的是,Teams 不支持这种丰富的 HTML 格式。您将获得的最好的是一些有限的降价支持,但至少它是一些东西。请参阅此处了解更多信息:https://support.microsoft.com/en-ie/office/use-markdown-formatting-in-teams-4d10bd65-55e2-4b2d-a1f3-2bebdcd2c772 .