如何使用部分斜体将文本复制到剪贴板?

时间:2017-02-02 23:51:17

标签: c# winforms clipboard copy-paste clipboarddata

如何将txtTitleofWebpage.Text复制到剪贴板时以斜体显示,以便用户可以将引用复制到Microsoft Word文档中?我正在尝试使用C#创建一个Windows表单应用程序,以根据用户输入表单的信息生成哈佛引用。

以下是代码:

Clipboard.SetText(wholeName + ", (" + yOPDate + ") " + txtTitleofWebpage.Text + 
                  " [online]. Available from: " + txtURLWeb.Text + " [Accessed: " + 
                  accessDateWeb.Value.ToShortDateString() + "].", TextDataFormat.Rtf);

1 个答案:

答案 0 :(得分:1)

似乎你必须插入一个标题'在html字符串中,我找到了两个例子:

这适用于Word:
示例代码:

    Clipboard.SetText(@"Version:1.0
                        StartHTML:000125
                        EndHTML:000260
                        StartFragment:000209
                        EndFragment:000222
                        <HTML>
                        <head>
                        <title>HTML clipboard</title>
                        </head>
                        <body>
                        <!–StartFragment–><b>Hello!</b><!–EndFragment–>
                        </body>
                        </html>", 
                        TextDataFormat.Html);

这会将 Hello!复制到剪贴板,您必须根据我认为的大小更改片段,因此我不确切知道如何使用动态字符串,但我希望这会让你开始。 666

如果您还可以使用RTF

Clipboard.SetText(@"{\rtf1\ansi This is in \i\f0\fs17 italic\i0.}",
                    TextDataFormat.Rtf);

字符串示例

var q = "test123";
Clipboard.SetText(@"{\rtf1\ansi This is in \i\f0\fs17 " + q + @"\i0.}",
                    TextDataFormat.Rtf);

or

var q = "test123";
Clipboard.SetText( $@"{\rtf1\ansi This is in \i\f0\fs17 {q}\i0.}",
                    TextDataFormat.Rtf);

请注意字符串第二部分之前的@,如果您需要转义某些字符(您需要使用 RTF ),请添加@每个开口的前面"

这似乎要容易得多,因为你不必插入标题,但格式化本身就更加复杂了。