2011-02-14 80 views
2

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

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

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

如果我打电话功能Clipboard.GetText()我可以清楚地看到,在返回的字符串中有额外的字符(\ n \ r)。

+0

WinForms或WPF?对KeyDown有所不同。 – 2011-02-14 22:05:08

回答

1

\r代表回车和\n a newline(换行符)字符。

方法formatText必须将这些添加到字符串的末尾。此外,程序记事本没有格式化功能,如粗体或斜体,它只是以选定的字体,大小和样式显示所有内容。

1

如果您只是添加\ n插入新行记事本不会理解,因为它期望\ r \ n作为换行符。试着将你的文本粘贴到Notepad ++中,你会发现换行符实际上在那里。

使用Environment.NewLine会更安全,它在Windows上会完全给你\ r \ n。