Практическое руководство. Сохранение файлов с помощью элемента управления RichTextBox в Windows Forms
Элемент управления RichTextBox в Windows Forms может записывать сведения, отображаемые в одном из нескольких форматов:
- с обычным текстом;
- обычный текст Юникода;
- формат RTF (Rich Text Format);
- формат RTF с пробелами вместо объектов OLE;
- обычный текст с текстовым представлением объектов OLE.
Чтобы сохранить файл, вызовите метод SaveFile. Для сохранения данных в поток можно также использовать метод SaveFile. Дополнительные сведения см. в разделе SaveFile(Stream, RichTextBoxStreamType).
Сохранение содержимого элемента управления в файл
- Определите путь к сохраняемому файлу. Для этого в реальном приложении обычно используется компонент SaveFileDialog. Его обзор приведен в статье Общие сведения о компоненте SaveFileDialog.
- Вызовите метод SaveFile элемента управления RichTextBox, указав сохраняемый файл и при необходимости тип файла. Если вы вызываете метод с именем файла в качестве единственного аргумента, предполагается, что файл должен быть сохранен в формате RTF. Чтобы указать другой тип файла, вызовите метод со значением перечисления RichTextBoxStreamType в качестве второго аргумента. В следующем примере в качестве расположения RTF-файла выбрана папка Мои документы. Используется именно это расположение, поскольку предполагается, что большинство компьютеров, работающих под управлением операционной системы Windows, содержат этот каталог. Это также позволяет пользователям с минимальным уровнем доступа к системе безопасно запускать приложение. В приведенном ниже примере предполагается, что форма с элементом управления RichTextBox уже добавлена.
Public Sub SaveFile() ' You should replace the bold file name in the ' sample below with a file name of your own choosing. RichTextBox1.SaveFile(System.Environment.GetFolderPath _ (System.Environment.SpecialFolder.Personal) _ & "\Testdoc.rtf", _ RichTextBoxStreamType.RichNoOleObjs) End Sub
public void SaveFile() < // You should replace the bold file name in the // sample below with a file name of your own choosing. // Note the escape character used (@) when specifying the path. richTextBox1.SaveFile(System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal) + @"\Testdoc.rtf", RichTextBoxStreamType.RichNoOleObjs); >
public: void SaveFile() < // You should replace the bold file name in the // sample below with a file name of your own choosing. richTextBox1->SaveFile(String::Concat (System::Environment::GetFolderPath (System::Environment::SpecialFolder::Personal), "\\Testdoc.rtf"), RichTextBoxStreamType::RichNoOleObjs); >
Важно! В этом примере создается файл (если файл отсутствует). Если приложению требуется создать файл, оно должно иметь доступ для создания к папке. Для задания разрешений используются списки управления доступом. Если файл уже существует, то приложению достаточно иметь лишь доступ для записи, т. е. меньшие привилегии. Безопаснее создавать файл во время развертывания, если это возможно, а также предоставлять доступ для чтения к отдельному файлу вместо доступа для создания к папке. По тем же соображениям рекомендуется записывать данные в пользовательские папки, а не в корневую папку или папку Program Files.
См. также
- RichTextBox.SaveFile
- RichTextBox
- Элемент управления RichTextBox
- Элементы управления для использования в Windows Forms
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Как сохранить файл в c windows form
На этом шаге мы рассмотрим назначение и использование этого компонента .
Компонент находится в списке All Windows Forms ( Все формы Windows Forms) палитры компонентов. С помощью этого компонента можно сохранять файл в нужном месте файловой структуры (так же как это делается в Windows ). Но файл сам по себе не сохраняется, т. к. компонент дает только путь к будущему месту расположения файла. На пользователе лежит обязанность самому написать участок программы для сохранения файла. Как и в OpenFileDialog , в этом компоненте применяется метод ShowDialog() для открытия диалогового окна в режме исполнения. Файл можно открыть в режиме чтения/записи, используя метод OpenFile() .
Компонент при добавлении его в форму появляется не в самой форме, а на поддоне, расположенном в нижней части окна дизайнера форм.
Перечень свойств SaveFileDialog приведен на рисунке 1.
Рис.1. Свойства компонента SaveFileDialog
Почти все свойства компонента совпадают со свойствами OpenFileDialog . Отметим только свойство OverwritePrompt , которое (если оно установлено в True ), вызывает появление диалогового окна Save As ( Сохранить как ) .
Когда пользователь выбирает имя файла и нажимает на кнопку Save ( Сохранить ) в диалоговом окне, метод ShowDialog() заносит в свойство FileName компонента имя файла и путь к нему. Никакой перезаписи файла при этом не происходит. Отсюда следует, что для записи файла в необходимое место файловой структуры нужно применять методы сохранения файла. Приведем пример приложения, которое читает строковый файл (текстовый файл в кодировке UTF-8 , в котором каждая строка отделена от другой символом «/») и переписывает в другое место под именем, которое мы выбираем в диалоговом окне. Затем файл с целью проверки читается в другое окно. Вид формы приложения в режиме дизайна и исполнения показан на рисунке 2, в режиме выполнения — на рисунке 3. Текст заголовочного файла представлен ниже.
#pragma once namespace My191_1 < using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace System::IO; //для ввода/вывода using namespace System::Text; . . . . . . private: /// /// Требуется переменная конструктора. // =========================================== void LoadFromFile(String^ File, ListBox^ lb) < // Этот метод открывает текстовый файл, // читает все его строки в // строку String^ и закрывает файл. // Строки должны отделяться // друг от друга разделителем "/" String^ d, ^b = File::ReadAllText(File); //(надо будет выделять по разделителю "/") lb->Items->Clear(); // Разборка длинной строки на строки, отделенные // друг от друга разделителями // Поиск 1-го вхождения подстроки в строку int i = b->IndexOf("/"); while ( i != -1 ) < d = b->Substring(0, i); lb->Items->Add(d); b = b->Substring( i + 1, b->Length - d->Length - 1); i = b->IndexOf("/"); > > // ------------------------------------------- void SaveToFile(String^ File, ListBox^ lb) < String^ a, ^b; int j = lb->Items->Count; File::Delete(File); for( int i = 0; i < j; i++ ) < // Чтение строк ChekedListBox в а и // формирование длинной строки в b a = lb->Items[i]->ToString(); //добавка разделителя строк b += a->Concat(a,"/"); // Этот метод открьшает файл, добавляет к нему строку // типа String^, закрывает файл. Если файл не // существует, он создается > //for File::AppendAllText(File, b); > // =========================================== /// System::ComponentModel::Container ^components; . . . . . . // Кнопка "Выход" private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) < Close(); >// Кнопка "Копировать" private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) < // ShowDialog() возвращает имя файла в FileName openFileDialog1->ShowDialog(); String ^a = openFileDialog1->FileName; LoadFromFile(a, listBox1); //Загрузка файла в ListBox1 // Выбор имени и пути для выходного файла // с помощью SaveFileDialog // Имя файла будет в FileName saveFileDialog1->ShowDialog(); a = saveFileDialog1->FileName; //сохранение файла из Listbox1 SaveToFile(a, listBox1); //чтение сохраненного файла в ListBox2 openFileDialog1->ShowDialog(); a=openFileDialog1->FileName; LoadFromFile(a, listBox2); >
Архив проекта вместе с файлом примера можно взять здесь.
Рис.3. Результат работы приложения
На следующем шаге мы рассмотрим компонент ColorDialog .
Как сохранить файл в C# через Windows Form
Опция сохранения на компьютере распространена повсюду. Бывает что создавая приложение необходимо, чтобы оно обладало данной функцией. Создание приложения на C# и Windows Form при использовании Visual Studio достаточно простая задача. (ссылка) Но что если нам понадобится вызвать из приложения окно сохранения. И в сегодняшней статье мы создадим простое приложение Windows Form, рассмотрим как записать данные в файл и в конце добавим окно сохранения.
Для начала создадим новое приложение, так как это описано в одной из статей. Далее вкладка ВИД > панель элементов. Выбираем элемент Button и помещаем его на форму.
Затем добавим один элемент RichTextBox, принимающий пользовательский ввод. Кнопка сохранения будет помещать введенный текст в указанное место на компьютере.

Название на кнопке изменено в окне свойств. Правая кнопка > свойства. Находим поле текст.
Дважды щелкаем по элементу Button. В результате получаем обработчик нажатия. Внутри которого объявляется строковая переменная, которой присваивается текст полученный в элементе RichTextBox. Для простоты выведем его в новое окно через MessageBox.
private void button1_Click(object sender, EventArgs e)
string text = richTextBox1.Text;
MessageBox.Show(text);
>
Для открытия окна сохранения используем класс SaveFileDialog.
private void button1_Click(object sender, EventArgs e)
string text = richTextBox1.Text;
MessageBox.Show(text);
SaveFileDialog open = new SaveFileDialog();
// открываем окно сохранения
open.ShowDialog();
// присваниваем строке путь из открытого нами окна
string path = open.FileName;
try // создаем файл используя конструкцию using
using(FileStream fs = File.Create(path))
// создаем переменную типа массива байтов
// и присваиваем ей метод перевода текста в байты
byte[] info = new UTF8Encoding(true).GetBytes(text);
// производим запись байтов в файл
fs.Write(info, 0, info.Length);
>
>
catch (Exception ex)
Console.WriteLine(ex.ToString());
В данном коде используется конструкция using, для безопасного открытия потока на запись с последующим его закрытием. Данная конструкция автоматизирует освобождение ресурсов памяти. Таким образом мы создали, простое оконное приложение Windows Form на C#, с функцией записи в файл и его сохранением.

![]()
Создано 07.04.2022 10:00:30
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2024 Русаков Михаил Юрьевич. Все права защищены.
Как реализовать сохранение файла С# WinForms
«Сохранить как» нетрудно реализовать, а вот с обычным сохранением без диалогового окна непонятно.
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e) < if (saveFileDialog1.ShowDialog() == DialogResult.Cancel) return; // получаем выбранный файл string filename = saveFileDialog1.FileName; // сохраняем текст в файл System.IO.File.WriteAllText(filename, richTextBox1.Text); MessageBox.Show("Файл сохранен"); >private void открытьToolStripMenuItem_Click(object sender, EventArgs e) < if (openFileDialog1.ShowDialog() == DialogResult.Cancel) return; // получаем выбранный файл string filename = openFileDialog1.FileName; //читаем файл в строку string fileText = System.IO.File.ReadAllText(filename); richTextBox1.Text = fileText; MessageBox.Show("Файл открыт"); >private void сохранитьToolStripMenuItem1_Click(object sender, EventArgs e)
Отслеживать
задан 1 июн 2021 в 20:01
Мария Гормакова Мария Гормакова
23 5 5 бронзовых знаков
Сделайте filename полем формы. И по этому пути сохраняйте повторно.
1 июн 2021 в 20:12
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Достаточно запомнить имя сохраненного или загруженного ранее файла
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e) < SaveFile(true); >private void открытьToolStripMenuItem_Click(object sender, EventArgs e) < if (openFileDialog1.ShowDialog() == DialogResult.Cancel) return; savedFileName = openFileDialog1.FileName; richTextBox1.Text = File.ReadAllText(savedFileName); MessageBox.Show("Файл открыт"); >private void сохранитьToolStripMenuItem1_Click(object sender, EventArgs e) < SaveFile(false); >private string savedFileName; private void SaveFile(bool saveAs) < if (saveAs || savedFileName == null) < if (saveFileDialog1.ShowDialog() == DialogResult.Cancel) return; savedFileName = saveFileDialog1.FileName; >File.WriteAllText(savedFileName, richTextBox1.Text); MessageBox.Show("Файл сохранен"); >
Еще советую не использовать русские буквы в названиях переменных, классов и прочих контролов.