Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/78: Рейтинг темы: голосов - 78, средняя оценка - 4.68
5 / 5 / 1
Регистрация: 11.12.2009
Сообщений: 86

Сохранение текста из RichTextBox с форматированием и с указанной кодировкой

11.12.2009, 22:18. Показов 14737. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю текстовый редактор. Необходимо сохранять текст в файл с заданными в редакторе цветом,кодировкой и шрифтом. Использую RichTextBox. Проблема стоит в том, что могу сделать либо сохранение с определенной кодировкой, либо только с цветом и шрифтом. А как сделать так, чтобы сохранять текст с заданными мной этими тремя параметрами? Помогите, не могу допетрить...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2009, 22:18
Ответы с готовыми решениями:

Сохранение текста RichTextBox
Есть RichTextBox с форматированным текстом, при нажатии на кнопку текст сохраняется в файл rtf методом SaveFile. Но при определенных...

Сохранение текста из richTextBox
Подскажите, почему не работает? StreamWriter ^sr4 = gcnew StreamWriter("pwd1.txt"); System::String ^text4 = sr4->WriteLine; ...

Сохранение текста из RichTextBox
Здравствуйте, я пишу прогу для работы с документом. Этот документ я могу открыть в окне richtextbox и теперь мне нужно содержимое данного...

24
 Аватар для Dexs
417 / 285 / 3
Регистрация: 29.07.2009
Сообщений: 1,981
12.12.2009, 14:14
В какой формате сохраняете?
0
 Аватар для HIMen
4340 / 1509 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
12.12.2009, 14:33
А как сохраняете?
C#
1
richTextBox1.SaveFile("file.rtf", RichTextBoxStreamType.RichText);
0
5 / 5 / 1
Регистрация: 11.12.2009
Сообщений: 86
12.12.2009, 16:10  [ТС]
Dexs: сделал в фильтре формат *.xt вот туда и сохраняю...от этого зависит разве?

HIMen: если так сохраняю то настройки цвета и шрифта сохраняются нормально..как быть тогда с кодировкой? мне надо задавать кодировку какую я хочу...и потом сохраняю.в будущем при открытии если эта кодировка стоит то он долежн текст нормально выдать: и штоб цвет и шрифт сохранялся..если будет стоять кодировка другая то в RichTextBox должны появица краказябры но с цветом и шрифтом как при сохранении были...кстати, и ваще это возможно??

начал писать курсач на си шарпе - можно сказать знакомство с этим языком, и встрял на этом моменте. наслед неделе сдавать надо...а не бельмейсен...интернет облазил - ничего подобного не нашел...как быть?
0
 Аватар для Dexs
417 / 285 / 3
Регистрация: 29.07.2009
Сообщений: 1,981
12.12.2009, 16:19
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
        private int SasFile()
        {
            string FileEnd;
            this.saveFileDialog1.FileName = FileName;
            this.saveFileDialog1.Filter = "Текстовый файл(*.txt)|*.txt|Файл rtf(*.rtf)|*.rtf|Все файлы(*.*)|*.*";
            this.statusBarPanel1.Text = "Сохранение файла...";
            if (this.saveFileDialog1.ShowDialog() == DialogResult.OK &&
                this.saveFileDialog1.FileName.Length > 0) 
            {
                FileEnd = this.saveFileDialog1.FileName.Substring(this.saveFileDialog1.FileName.Length-4,4);
                if (FileEnd == ".rtf")
                    this.richTextBox1.SaveFile(this.saveFileDialog1.FileName,RichTextBoxStreamType.RichText);
                else
                    this.richTextBox1.SaveFile(this.saveFileDialog1.FileName,RichTextBoxStreamType.PlainText);
            }
            else
            {
                return 1;
            }
            FileName = this.saveFileDialog1.FileName;
            FSave = 1;
            return 0;
        }
 
        private void SFile()
        {
            string FileEnd;
            FileEnd = FileName.Substring(FileName.Length-4,4);
            if (FileEnd == ".rtf")
                this.richTextBox1.SaveFile(FileName,RichTextBoxStreamType.RichText);
            else 
                this.richTextBox1.SaveFile(FileName,RichTextBoxStreamType.PlainText);

SasFile - save as
SFile - save
0
5 / 5 / 1
Регистрация: 11.12.2009
Сообщений: 86
12.12.2009, 18:21  [ТС]
Dexs: дада, я так и делал...с этим все нармально...еще я делал так: вот у меня есть функция изменения кодировки.пользователь нажимает кнопочку и вызываеца форма с предлагаемыми кодировками (эта функция вызывает и форму, и там же происходит изменение исходной кодировки на ту, что выделена пользователем в ListBox-е). соответственно кодировка текста меняеца и при этом меняеца сам текст .каким образом? если текст был окрашен в несколько цветов и было несколько разных шрифтов и размеров задано для текста, то после применения кодировки все эти настройки падали и текст становился стандартно черным шрифта Times New Roman размера 14. как сделать так чтобы при изменении кодировки этого не происходило?? есть чтонить подобное...??

Добавлено через 5 минут
пытался и так сделать: при сохранении делал поток в котором в качестве параметра передавал заданую пользователем кодировку. он мне сохранял как надо, с нужной кодировкой,вот токо без сохранения настроек цвета и шрифта..может быть как то создать свой поток, ну класс свой...где будут поля цвет шрифт и кодировка...так можно? токо вот не знаю как осуществить запись при таком раскладе в текстовый файл...
0
5 / 5 / 1
Регистрация: 11.12.2009
Сообщений: 86
17.12.2009, 10:14  [ТС]
Ребят,ну помогите ктонить...нет чтоли идей ваще никаких? я уже не знаю как пробовать=(
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
17.12.2009, 11:34
А как вы меняете кодировку? Берете текст со свойства .Text, меняете кодировку и присваиваете обратно? Если да - может попробовать делать то же самое, но со свойством .Rtf ?
0
5 / 5 / 1
Регистрация: 11.12.2009
Сообщений: 86
17.12.2009, 14:18  [ТС]
что вы имеете ввиду??? О_о

менять - меняеца, вот токо не знаю просто как сохранить со всеми параметрами (цвет, кодировка, шрифт)

пробовал так с кодировкой делать:
C#
1
2
3
4
5
6
        {   try
            {   using (StreamWriter _streamWrite = new StreamWriter(_text,
                                                false, _indexCode)) //_indexCode есть переменная типа Encoding
                {   _streamWrite.Write(tBox.Text);
                    _streamWrite.Close();
                }
сохраняет с измененой кодировкой, но параметры текста цвет и шрифт куда тут сунуть??

сохраняю так:
C#
1
tBox.SaveFile(dSave.FileName, RichTextBoxStreamType.RichText);
сохраняет с цветом и шрифтом, токо вот тада куда тут сунуть кодировку??? вот в чем проблема...мошт есть дргуой способ?

Добавлено через 16 минут
вот тут есть еще возможность вставлять дерменную потока:
C#
1
        tBox.SaveFile(Stream data, RichTextBoxStreamType.RichText);
ток вот не знаю что ето такое и с чем его едят...мошт его както использовать???
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
18.12.2009, 00:26
Цитата Сообщение от Barabas Посмотреть сообщение
сохраняю так:
Код C#1 tBox.SaveFile(dSave.FileName, RichTextBoxStreamType.RichText);
сохраняет с цветом и шрифтом, токо вот тада куда тут сунуть кодировку??? вот в чем проблема...мошт есть дргуой способ?
Сначала меняете кодировку текста текстбоксе (берете из него текст, перекодируете, и обратно присваиваете), потом сохраняете способом, который сохраняет цвет и шрифт
0
5 / 5 / 1
Регистрация: 11.12.2009
Сообщений: 86
23.12.2009, 13:24  [ТС]
попробовал..не фурычит=(...

Добавлено через 3 минуты
кодировку меняю так:

C#
1
2
3
4
5
       _indexCode = Encoding.GetEncoding(_masCode[i]);
                    _newBox.Text = tBox.Text;
                    byte[] _textByte = Encoding.Convert(_startCode, _indexCode,
                                                        _startCode.GetBytes(tBox.Text));
                    _newBox.Text = _indexCode.GetString(_textByte);
где _masCode[i] - номер кодировки (866, 1251 и тд...)
_startCode - начальная кодировка
_indexCode - кодировка в которую надо перевести....

Добавлено через 53 секунды
и потом присваиваю tBox.Text = _newBox.Text

Добавлено через 1 минуту
в реузльтате он по идее меняет ее (пробовал чисто с кодировкой через потоки StreamWrite и Read), но при сохранении и открытии не происходит должных изменений=(
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
23.12.2009, 14:31
При кодировании свойства RichTextBox.Text вы теряете форматирование текста. Попробуйте перекодировать свойство .Rtf. Должно получиться без мороки с потоками.
0
5 / 5 / 1
Регистрация: 11.12.2009
Сообщений: 86
23.12.2009, 14:41  [ТС]
да...я это уже понял..что я и пытаюсь сделать (сохранить форматирование)..
нащет rtf...как эт сделать?? что имеете ввиду?
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
23.12.2009, 20:46
Сейчас, если получится, попробую помочь.

Добавлено через 2 часа 52 минуты
Элемент управления RichTextBox хранит текст в формате Rich Text Format (RTF), благодаря чему поддерживается форматирование текста. В RichTextBox.Text хранится только текст (без настроек шрифта, цвета, ...), в RichTextBox.Rtf хранится текст с форматированием в формате RTF.
http://ru.wikipedia.org/wiki/RTF

Когда присваиваете новый текст свойству .Text, автоматически изменяется и .Rtf и теряется форматирование, т.к. приложение считает, что это новый текст.
Чтоб изменить кодировку текста, разберитесь в структуре данного формата. В нем много управляющих последовательностей.

Добавлено через 6 минут
Кстати, на сколько я помню, напрямую (без использования Unicode кодов символов) в RTF используется только кодировка ASCII. Потому нет смысла форматировать текст в RichTextBox и пытаться сохранить его в другой кодировке.
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
23.12.2009, 21:30
Вот склепал примерное приложение. Оно меняет кодировку текста, но не уверен, все ли редакторы смогут понять НЕ ASCII кодировку в RTF. Проверял на Word'е, но распознал.
Текст конвертирует в принципе любой, но нужно использовать кодировки, понимающие английский текст, т.к. управляющие последовательности пишутся английскими=))))))) символами и их нельзя коверкать иначе выскочит исключение)))
Вложения
Тип файла: rar TextEncoder.rar (22.8 Кб, 98 просмотров)
0
5 / 5 / 1
Регистрация: 11.12.2009
Сообщений: 86
23.12.2009, 23:54  [ТС]
...разбираюсь...=)

Добавлено через 45 минут
можно паралельный вопрос:
вот информация о файле который должен был быть сохранен в UTF-8 кодировке..:

{\rtf1\ansi\ansicpg1251\deff0\deflang104 9{\fonttbl{\f0\fnil\fcharset204{\*\fname Arial;}Arial CYR;}}
{\colortbl ;\red255\green128\blue64;}
\viewkind4\uc1\pard\f0\fs29\'e2\'e0\'ef\ 'e2\'e0\'ef\'e2\'e0\'ef\cf1\'e2\'e0\'ef\ 'fb\'e2\'ef\'e2\b\i\fs41\'e0\'e2\'ef\'e2 \'fb\'ef\'fb\'e2\'e0\'ef\cf0\b0\i0\fs29\ par
}


получаеца он был сохранен в ansicpg1251, то есть не UTF-8, а windows-1251?
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
24.12.2009, 00:03
Успеха! Обязательно отпишитесь.
0
5 / 5 / 1
Регистрация: 11.12.2009
Сообщений: 86
24.12.2009, 09:10  [ТС]
Цитата Сообщение от body90 Посмотреть сообщение
нет смысла форматировать текст в RichTextBox и пытаться сохранить его в другой кодировке
то есть это означает что другие кодировки не получица при всем желании использовать??? О_о так чтоль?
0
 Аватар для body90
467 / 344 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
25.12.2009, 02:28
Получится. Я попробовал и Word понял PDF в другой кодировке (не знаю как на это отреагируют остальные приложения). Просто это как-то необычно. В отличие от обычного текстового формата, где есть много стандартов кодировок, в этом формате есть одна принятая кодировка.
Хотя в принципе дополнительные функции в приложении никогда не помешают. Мало ли что захочет сделать пользователь + практика программисту.

Добавлено через 19 минут
{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl {\f0\fnil\fcharset204{\*\fname Arial;}Arial CYR;}}
{\colortbl ;\red255\green128\blue64;}
\viewkind4\uc1\pard\f0\fs29\'e2\'e0\'ef\ 'e2\'e0\'e f\'e2\'e0\'ef\cf1\'e2\'e0\'ef\'fb\'e2\'e f\'e2\b\i\ fs41\'e0\'e2\'ef\'e2\'fb\'ef\'fb\'e2\'e0 \'ef\cf0\b 0\i0\fs29\par
}
Почитайте об этом формате. Может получится что-то указывать вместо выделенного текста.
1
5 / 5 / 1
Регистрация: 11.12.2009
Сообщений: 86
28.12.2009, 13:36  [ТС]
никак не могу дойти до сути=(...еще раз...если сохранять в формате ртф путем SaveFile(rtf), то текст который находится в RichTextBox (перекодированный) сохраница имено с этой кодировкой??? просто когда открываю в Worde файлы с другой кодировкой, то он сразу выдает окошечко для выбора кодировки...когда изменяю кодировку у своего текста и сохраняю потом, то при открытии его в Worde ничего не выдается,никакого окошечка..т оесть значит он имеет не ту кодировку что была заданы мной в редакторе??? так чтоли??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.12.2009, 13:36
Помогаю со студенческими работами здесь

Сохранение форматированного текста из richTextBox
Добрый вечер. Подскажите как мне сохранить текст из richTextBox с форматированием? Этот код сохраняет весь текст в одну строку: ...

Сохранение текста из richTextBox в Word
Доброе время суток.. Подскажите как можно реализовать сохранение текста из richTextBox в Word(c помощью saveFileDialog)? И затем, как можно...

Сохранение изменяемого текста из richtextbox в БД Access
Всем приве. Искал на форуме, но не нашел.. В виду,наверное, плохого поиска или отсутствия подобного вопроса. В общем. Подключена бд acces. ...

Сохранение текста из RichTextBox в текущей вкладке tabControl
Всем привет!)) Вот у меня появилась проблема: У меня есть кнопка и если я на неё нажимаю создаётся вкладка в tabControl1 а внутри...

Сохранение форматирования текста из RichTextBox при записи в SQLite
Здравствуйте, уважаемые коллеги! :senor: Имеется RichTextBox, в котором происходит колдовство над текстом. Далее текст отправляется в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru