Копирование форматированного текста в буфер обмена - PullRequest
2 голосов
/ 15 февраля 2011

У меня странная проблема с копированием текста в буфер обмена.Я хочу скопировать текст из текстового поля с дополнительным форматированием.Для этого я перехватываю событие KeyDown в текстовом поле и проверяю, нажаты ли клавиши CTRL и C.Затем я делаю вот так

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

Функция formatText добавляет пару пустых дополнительных строк в текст.Однако, если я вставлю этот текст в блокнот, дополнительного форматирования не будет.Почему это так?

Если я вызываю функцию Clipboard.GetText(), я ясно вижу, что в возвращаемой строке есть дополнительные символы (\ n \ r).

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

Если вы просто добавляете \ n для вставки новых строк, Блокнот не поймет этого, поскольку ожидает \ r \ n как разрыв строки.Попробуйте вставить свой текст в Notepad ++, и вы увидите, что разрывы строк действительно есть.

Безопаснее использовать Environment.NewLine, который в Windows даст вам точно \ r \ n.

1 голос
/ 15 февраля 2011

\r представляет возврат каретки и \n a символ новой строки (перевод строки).

Метод formatText должен добавлять их в конец строки.

Кроме того, программа Notepad не имеет таких функций форматирования, как жирный или курсив, она просто отображает все с выбранным шрифтом, размером и стилем.

...