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

C# 如何使用部分斜体将文本复制到剪贴板?,c#,winforms,clipboard,copy-paste,clipboarddata,C#,Winforms,Clipboard,Copy Paste,Clipboarddata,如何使txtTitleofWebpage.Text在复制到剪贴板时以斜体显示,以便用户可以将引用复制到Microsoft Word文档中?我正在尝试使用C#制作一个Windows窗体应用程序,从用户输入到窗体中的信息生成哈佛引用 代码如下: Clipboard.SetText(wholeName + ", (" + yOPDate + ") " + txtTitleofWebpage.Text + " [online]. Available from: "

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

代码如下:

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

似乎您必须在html字符串中插入“header”,我发现了两个示例:

这适用于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);
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);

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


这似乎容易得多,因为你不必插入标题,但格式本身在我看来更复杂。

好吧,不是那样。你需要使用一种格式,可以指定排版样式,并且与你想粘贴到的任何应用程序兼容。HTML和RTF是常见的选择。谷歌“c#将html复制到剪贴板“,最热门的都是现有的SO问题。@HansPassant-因此,我可以将TextDataFormat设置为HTML。尽管如此,我发现如果我在txtTitleofWebpages周围添加斜体开头和结尾标记,文本就会出错。在开头和结尾标记前面添加@,这将忽略可能被视为转义字符的转义字符。比如:
@“这\n不会换行”
@EpicKip那么,像这样<代码>剪贴板.SetText(@wholeName+,(“+yOPDate+”)++@txtitleOfWebPage.Text@+”[联机]。可从以下网址获得:“+txtrlWeb.Text+”[访问:“+accessDateWeb.Value.ToShortDateString()+”。@,TextDataFormat.Html)@HansPassant-文本将粘贴到Word文档中。@DownVoter请留下评论,说明我的答案为什么是错误的,而不是仅仅对其进行向下投票。我链接到的问题准确地描述了OP想要什么。出于好奇,我该如何使用RTF实现这一点?
TextDataFormat.RTF
?很明显,在字符串RtfYou中设置格式可能甚至不需要排序的标题。RTF可以工作,但我如何使它与textBox.Text中的变量和字符串一起工作?
var q = "test123";
Clipboard.SetText( $@"{\rtf1\ansi This is in \i\f0\fs17 {q}\i0.}",
                    TextDataFormat.Rtf);