C# 如何使用部分斜体将文本复制到剪贴板?
如何使txtTitleofWebpage.Text在复制到剪贴板时以斜体显示,以便用户可以将引用复制到Microsoft Word文档中?我正在尝试使用C#制作一个Windows窗体应用程序,从用户输入到窗体中的信息生成哈佛引用 代码如下: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: "
Clipboard.SetText(wholeName + ", (" + yOPDate + ") " + txtTitleofWebpage.Text +
" [online]. Available from: " + txtURLWeb.Text + " [Accessed: " +
accessDateWeb.Value.ToShortDateString() + "].", TextDataFormat.Rtf);
似乎您必须在html字符串中插入“header”,我发现了两个示例:
示例代码:
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);