RichTextBox не отображает символ перевода страницы

У меня есть текстовый файл, который, когда я открываю его в Блокноте, показывает символ подачи формы (байт 12). Я хочу показать этот символ в своем RichTextBox, но независимо от того, какую кодировку я использую, когда я читаю текстовый файл, он не будет отображаться. Когда я сам ввожу символ, он показывает. Когда я делаю myRTB.Text = "♀", это видно, но когда я делаю

myRTB.Text = File.ReadAllText(myFileName.txt);

это не показывает. Я также пытался использовать читателей в классе Encoding безрезультатно.

Как я могу отобразить символ подачи формы в моем rtb?


person user2320861    schedule 17.04.2014    source источник


Ответы (3)


Во-первых, перевод строки имеет значение 13. Если у вас есть символы со значением 12, то они не являются переводом строки.

Что касается вашей проблемы, ReadAllLines считывает строки файла в массив String, таким образом удаляя все разрывы строк. Вы можете поступить так, как предлагает Дамит, и вызвать ReadAllText, который считывает содержимое файла как один String, и присвоить результат свойству Text, либо вызвать ReadAllLines и присвоить результат свойству Lines. Однако лучше вызывать LoadFile на самом RichTextBox.

person jmcilhinney    schedule 17.04.2014
comment
Извините, я перепутал перевод строки и перевод формы. На самом деле перевод строки равен 10, а перевод формы - 12. (Asciitable.com) Я отредактирую свой пост. Я попробовал LoadFile, но ему не нравится мой формат файла. - person user2320861; 17.04.2014
comment
Б*ггер! Я всегда путаю возврат каретки и перевод строки. Какая же мы парочка глупых билли. ;-) Что касается вашего формата файла, я так понимаю, что это не RTF. В этом случае вы должны использовать перегрузку, которая позволяет указать RichTextBoxStreamType. Обязательно используйте подходящее значение в зависимости от вашей кодировки. - person jmcilhinney; 17.04.2014

попробуй с ReadAllText

myRTB.Text = File.ReadAllText(myFileName.txt, Encoding.Unicode);
person Damith    schedule 17.04.2014
comment
Черт, ему не нравится Encoding.Unicode или любой другой тип кодировки. Пишет неверный формат файла - person user2320861; 17.04.2014
comment
ты пробовал с myRTB.LoadFile("myFileName.txt", RichTextBoxStreamType.PlainText); - person Damith; 17.04.2014
comment
Да, ему не понравилось, как файл был отформатирован, или в нем не было символа перевода формы, или он дал мне китайский язык. - person user2320861; 17.04.2014

Спасибо за помощь @jmcilhinney и @Damith. Я закончил тем, что обманул систему, сделав грязный. Я видел, что myRTB заменял символ подачи формы на \page в RTF, но когда я сам ввел символ подачи формы, он поставил \u9792. Поэтому я пошел с хаком:

myRTB.Rtf = myRTB.Rtf.Replace("\\page", "\\u9792");

Если у вас есть что-то менее хакерское, что я могу заставить работать, пожалуйста, дайте мне знать.

person user2320861    schedule 17.04.2014