Копирование форматированного текста в буфер обмена
У меня странная проблема с копированием текста в буфер обмена. Я хочу скопировать текст из текстового поля с дополнительным форматированием. Для этого я перехватываю событие 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 не имеет функций форматирования, таких как жирный или курсив, она просто отображает все в выбранном шрифте, размере и стиле.