将格式化文本复制到剪贴板

时间:2011-02-14 21:58:33

标签: c# clipboard clipboard-interaction

我将文本复制到剪贴板时遇到了奇怪的问题。我想从文本框中复制带有其他格式的文本。为了做到这一点,我拦截文本框上的KeyDown事件,我检查按下CTRL和C键。那我就像那样

 string extraFormatedText = formatText(txtBox.Text);
 Clipboard.SetText(extraFormatedText, TextDataFormat.Text);

函数formatText在文本中添加了几个空的附加行。但是,如果我将此文本粘贴到记事本中,则没有其他格式。 为什么???

如果我调用函数Clipboard.GetText(),我可以清楚地看到返回的字符串中有额外的字符(\ n \ r)。

2 个答案:

答案 0 :(得分:1)

\r表示回车符,\n表示newline(换行符)。

方法formatText必须将这些添加到字符串的末尾。

此外,程序记事本没有格式化功能,如粗体或斜体,它只显示所选字体,大小和样式的所有内容。

答案 1 :(得分:1)

如果你只是添加\ n来插入新行,记事本将无法理解,因为它期望\ r \ n作为换行符。尝试将文本粘贴到Notepad ++中,您会看到实际存在换行符。

使用Environment.NewLine更安全,它在Windows上将完全为您提供\ r \ n。