Кажется, вам нужно вставить «заголовок» в строку html, я нашел 2 примера для этого:
Это работает с 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);
или
var q = "test123";
Clipboard.SetText( $@"{\rtf1\ansi This is in \i\f0\fs17 {q}\i0.}",
TextDataFormat.Rtf);
Обратите внимание на @
перед второй частью строки. Если вам нужно экранировать определенные символы (вам понадобится это с RTF), добавьте @
перед каждым открытием "
.
Это кажется намного проще, потому что вам не нужно вставлять заголовок, но само форматирование немного сложнее.
person
EpicKip
schedule
03.02.2017
@"This \n will not make a newline"
- person EpicKip   schedule 03.02.2017Clipboard.SetText(@<body> wholeName + ", (" + yOPDate + ") " + @<i> txtTitleofWebpage.Text @</i> + " [online]. Available from: " + txtURLWeb.Text + " [Accessed: " + accessDateWeb.Value.ToShortDateString() + "]." @</body>, TextDataFormat.Html);
- person JamesFromIT   schedule 03.02.2017Clipboard.SetText(@"<body>" + wholeName + ", (" + yOPDate + ") " + @"<i>" + txtTitleofWebpage.Text + @"</i>" + " [online]. Available from: " + txtURLWeb.Text + " [Accessed: " + accessDateWeb.Value.ToShortDateString() + "]. </body>", TextDataFormat.Html);
- person JamesFromIT   schedule 03.02.2017