将文本传输到带下划线的剪贴板

时间:2009-08-13 15:42:14

标签: c# text format clipboard underline

我有一个程序,用户输入一些数据,然后创建一个套用信函并将其复制到剪贴板

有些用户回来说他们希望信中的某些部分有下划线,以帮助他们发送信息的人更容易阅读(标题等)

我不知道如何标记带下划线的内容

我目前正在使用

Clipboard.SetDataObject(sb.ToString(), true);

其中sb是字符串构建器

关于如何标记下划线的任何想法?

3 个答案:

答案 0 :(得分:2)

您可能希望将RTF视为HTML的替代品,因为它较旧,它通常具有更好的支持,并且更有可能最终得到正确的文本文档而不是MS Word对HTML的可怕解释。您还会发现RTF支持分页符,而HTML则不支持分页符。但要注意RTF中的加价有点奇怪。例如:

Clipboard.SetText(@"{\rtf1\ansi\ansicpg1252\deff0\deflang2057{\fonttbl{\f0\fswiss\fcharset0 Arial;}}\viewkind4\uc1\pard\f0\fs20 text \ul  text\ulnone  text\par}", TextDataFormat.Rtf);

可以从Microsoft specification for RTF找到here

答案 1 :(得分:1)

假设您的用户正在粘贴一个识别HTML的程序(例如Microsoft Word),您可以这样做:

string underlinedText = "<span style=\"text-decoration: underline;\">" + 
                            sb.ToString() + "</span>";
Clipboard.SetDataObject(underlinedText, true);

这将为复制到剪贴板缓冲区的整个文本片段加下划线。

答案 2 :(得分:-2)

他们将这些数据粘贴到哪里?您的代码是客户端还是Web应用程序?

我建议添加WYSIWYG控件或RichTextBox。这可以让用户在剪切和粘贴之前在程序中进行格式化。