Копирование форматированного текста в буфер обмена

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

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

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

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

2 ответа

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

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

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

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

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

Другие вопросы по тегам