Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
12 / 12 / 2
Регистрация: 27.11.2011
Сообщений: 665
1

Как сохранить три RichTextBox в один RTF файл?

06.03.2018, 15:37. Показов 3113. Ответов 31
Метки нет (Все метки)

Всем привет!!! Такой вопрос:
На форме есть три ричтекстбокса. Как их все сохранить в один RTF файл. Делаю стандартными методами, последний перезаписывает файл. Спасибо!!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2018, 15:37
Ответы с готовыми решениями:

Как можно сохранить текст из RichTextBox в файл с раширением rtf?
подскажите плиз: как можно сохранить текст из RichTextBox в файл с раширением rtf, что то у меня...

Как сохранить текст из нескольких richTextBox в один файл
Привет всем. По щелчку кнопки нужно сохранить текст из 2-ух richTextBox в один файл, но текст из...

Как сохранить текст из RichTextBox.RTF в БД Access
Проблема в том, что RichTextBox кодирует русские буквы, например буква ы кодируется в \'fb, при...

Сохранить картинки и текст из RichTextBox в rtf
Есть текст и картинки в RichTextBox подскажите как всю информацию записать в rtf ?

31
Лень — мое второе и
2965 / 2193 / 640
Регистрация: 28.11.2014
Сообщений: 3,346
Записей в блоге: 2
06.03.2018, 15:43 2
timsc1, покажите как делаете
0
12 / 12 / 2
Регистрация: 27.11.2011
Сообщений: 665
06.03.2018, 15:48  [ТС] 3
Orlangur1991,
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 Dim SFD As New SaveFileDialog
        SFD.Filter = "RichTextFormat (*.rtf)|*.rtf|Текстовые файлы (*.txt)|*.txt"
        If SFD.ShowDialog = DialogResult.OK And SFD.FilterIndex = 1 Then 'сохранить в формате .rtf
            Dim SavedName = SFD.FileName
            Try
                rt1.SaveFile(SavedName, RichTextBoxStreamType.RichText)
                rt2.SaveFile(SavedName, RichTextBoxStreamType.RichText)
                rt3.SaveFile(SavedName, RichTextBoxStreamType.RichText)
            Catch Exc As Exception
                MsgBox(Exc.Message)
            End Try
        ElseIf SFD.FilterIndex = 2 Then 'сохранить в формате .txt
            Dim SavedName = SFD.FileName
            Try
                System.IO.File.WriteAllText(SavedName, rt1.Text, System.Text.Encoding.Default)
                System.IO.File.AppendAllText(SavedName, rt2.Text, System.Text.Encoding.Default)
                System.IO.File.AppendAllText(SavedName, rt3.Text, System.Text.Encoding.Default)
 
            Catch Exc As Exception
                MsgBox(Exc.Message)
            End Try
        End If
код взял на этом сайте...
0
Администратор
Эксперт .NET
13164 / 10721 / 4424
Регистрация: 17.03.2014
Сообщений: 21,606
Записей в блоге: 1
06.03.2018, 16:32 4
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

timsc1, попробуй собрать весь текст в один RichTextBox и сохранять его. Примерный код
vb.net
1
2
rt1.Rtf = rt1.Rtf & rt2.Rtf & rt3.Rtf
rt1.SaveFile(SavedName, RichTextBoxStreamType.RichText)
Оригинальный Rtf можно сохранить в переменную или использовать временный невидимый RichTextBox
1
Модератор
Эксперт .NET
3251 / 2912 / 448
Регистрация: 27.01.2014
Сообщений: 5,397
07.03.2018, 05:38 5
timsc1, данный RTF файл в дальнейшем планируете загружать в программу свою для редактирования? Или же нет?
0
12 / 12 / 2
Регистрация: 27.11.2011
Сообщений: 665
07.03.2018, 09:37  [ТС] 6
Yury Komar, нет, просто сохранить, чтобы потом открыть для просмотра в вордпаде...
0
636 / 590 / 90
Регистрация: 19.03.2012
Сообщений: 1,123
13.03.2018, 19:09 7
timsc1, попробуйте так:
vb.net
1
2
3
Dim RTB As New RichTextBox
RTB.Rtf = rt1.Rtf & rt2.Rtf & rt3.Rtf
RTB.SaveFile(SavedName, RichTextBoxStreamType.RichText)
1
Модератор
Эксперт .NET
3251 / 2912 / 448
Регистрация: 27.01.2014
Сообщений: 5,397
14.03.2018, 08:05 8
плюс после сохранения надо бы
vb.net
1
RTB.Dispose
2
12 / 12 / 2
Регистрация: 27.11.2011
Сообщений: 665
16.03.2018, 08:31  [ТС] 9
Nachrichter, Ваш вариант почему-то не работает, сохраняет только 1-й РТБ. Ваш код немного переделал:
vb.net
1
 RTB.AppendText(rt1.Text & vbCrLf & rt2.Text & vbCrLf & rt3.Text)
теперь сохраняет как надо...
Nachrichter, Yury Komar, Спасибо за помощь!!!
1
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
27.09.2019, 16:00 10
Yury Komar, А вы не могли бы подсказать по dispose, у меня есть rtb1 из которого я периодически сохраняю в rtf формат.и иногда вылетает ошибка. Это происходит при нажатии на кнопку. Может ли это связано с тем что dispose не использую?
0
Модератор
Эксперт .NET
3251 / 2912 / 448
Регистрация: 27.01.2014
Сообщений: 5,397
28.09.2019, 05:13 11
а как вы сохраняете, дайте больше информации.
Что за ощибка?
Используется ли файл кем либо еще в момент сохранения?
Покажите свой код...
1
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
28.09.2019, 06:43 12
Yury Komar, Да там все просто. Есть обычный RTB1, кнопка toolsrtip и Savefiledialog1. Есть два формата сохранения rtf и txt. В 95 случаях их 100, все сохраняет как положено. Но иногда крашит, что-то связано со stack overflow. Искал читал,ответов мало по этому поводу. В итоге понял что собирал не для той архитектуры процессора. Пересобрал, стало реже появляться. И все равно опять выкидывает( отладчик на пк где стоит программа поставить возможности нет( я подумал не может ли в rtb находится какой-то не читаемый символ который может давать ошибку?(

Добавлено через 1 минуту
И да, ошибка возникает не при нажатии кнопки сохранить, а при нажатии кнопки вызова savefiledialog
0
Администратор
Эксперт .NET
13164 / 10721 / 4424
Регистрация: 17.03.2014
Сообщений: 21,606
Записей в блоге: 1
28.09.2019, 08:32 13
westcoast89, похоже что где-то в коде есть рекурсия из-за которой и возникает stackoverflow. Нужно видеть весь код чтобы сказать точно.
1
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
28.09.2019, 09:54 14
Yury Komar,
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub toolstripbutton2_click(sender as object, e as EventArgs) Handles toolsrtipbutton2.click
If SaveFileDialog1.ShowDialog=DialogResult.OK and SaveFileDialog1.FilterIndex =2 Then
FilePath1 = SaveFileDialog1.FileName
Try 
RTB1. SaveFile(FilePath1, RichTextBoxStreamType.RichText)
Catch ex as Exception 
End try
ElseIf SaveFileDialog1.FilterIndex = 1 Then 
Try 
IO.File.WriteAllLines(Filepath1, RTB1.Lines, System.Text.Encoding.GetEncoding(1251))
Catch ex as exception 
End try
End if
End sub
Добавлено через 2 минуты
Yury Komar, Есть ещё таймер для автосохранерия, но он не мешает... И сохраняет постоянно стабильно кстати.
FilePath1 используется для такой же кнопки сохранения только в другом tooltip, это не может проблемой?

Добавлено через 3 минуты
OwenGlendower,
Что такое ресурсия я погуглил, но не очень понял как это относится к открытию Savefiledialog (
Ошибку очень тяжело отловить, редко происходит (
0
Модератор
Эксперт .NET
3251 / 2912 / 448
Регистрация: 27.01.2014
Сообщений: 5,397
28.09.2019, 10:57 15
westcoast89, покажите код таймера еще
1
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
28.09.2019, 11:28 16
Вот что выдаёт ошибка
Имя события проблемы BEX
Имя модуля с ошибкой StackHash_0a9e
Код исключения c0000005
Данные исключения 0000008

Добавлено через 14 минут
Yury Komar,
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Timer2_Tick(sender As Object,  e as EventArgs) Handles Timer2.Tick
Dim CurLenghtRTB As Integer = RTB1.Text.Lenght 
If IO.File.Exist(FilePath1) Then 
If RTB1.Text.Lenght > 0 then
If CurLenghtRTB > LengthRTB then
SaveToolStripMenuItem.Enabled=True
SavestripButton8.Enable = true
Else 
SaveToolStripMenuItem.Enabled=false 
SavestripButton8.Enable = False
End if 
End if
End if
End sub
0
Модератор
Эксперт .NET
3251 / 2912 / 448
Регистрация: 27.01.2014
Сообщений: 5,397
28.09.2019, 12:52 17
westcoast89, не, в таймере проблем нет.
А на какой строке выдаёт ошибку то?
В коде сохранения у вас все манипуляции с файлами заключены в Try...Catch, тоесть вы не должны видеть ошибку в принцыпе.
Значит она появляется в другом месте, не в момент сохранения...

Определите/скажите где именно (строка) в коде эта ошибка, иначе тяжело помочь имея неполную информацию.
1
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
28.09.2019, 12:59 18
Yury Komar, Судя по ошибке проблема в пк( Лечится вроде как отключением DEP...
По строке... Отладка на том пк на котором вылетает не возможна... Нет студии
Да я написал, что скорее всего в Savefiledialog дело.. Так как если открылся он, то и даст сохранить
0
Модератор
Эксперт .NET
3251 / 2912 / 448
Регистрация: 27.01.2014
Сообщений: 5,397
28.09.2019, 13:24 19
westcoast89, ненадо студию.
Вы вместе с файлом EXE перенесите еще и файл PDB или как там его.
И в окне ошибки вы увидите класс и номер строки на которой данная ошибка появилась... Это для отладки полезно, чтоб студию не ставить
1
1 / 1 / 0
Регистрация: 21.11.2018
Сообщений: 82
28.09.2019, 13:32 20
Yury Komar, Интересно) Беру файл pdb, кладу в корень где приложение и что потом куда смотреть?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2019, 13:32

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как сохранить RichTextBox в файл? c#
Как сохранить RichTextBox? просто без диалогового окна. Вот код Сохранить как. void...

Как сохранить изображение из RichTextBox в файл?
На форме лежит RichTextBox, в котором EnableAutoDragAndDrop = true. RichTextBox пустой. Открываю...

Как сохранить текст из RichTextBox в файл doc или docx?
Всем привет! Как сохранить текст из RichTextBox в файл doc или docx?

Как сохранить содержимое RichTextBox в файл без потери форматирования
Всем доброго времени суток! Сегодня столкнулся с такой вот проблемой: пишу аналог блокнота на c#,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.