Как сохранить файл в c windows form
Окна открытия и сохранения файла представлены классами OpenFileDialog и SaveFileDialog . Они имеют во многом схожую функциональность, поэтому рассмотрим их вместе.
OpenFileDialog и SaveFileDialog имеют ряд общих свойств, среди которых можно выделить следующие:
- DefaultExt : устанавливает расширение файла, которое добавляется по умолчанию, если пользователь ввел имя файла без расширения
- AddExtension : при значении true добавляет к имени файла расширение при его отсуствии. Расширение берется из свойства DefaultExt или Filter
- CheckFileExists : если имеет значение true , то проверяет существование файла с указанным именем
- CheckPathExists : если имеет значение true , то проверяет существование пути к файлу с указанным именем
- FileName : возвращает полное имя файла, выбранного в диалоговом окне
- Filter : задает фильтр файлов, благодаря чему в диалоговом окне можно отфильтровать файлы по расширению. Фильтр задается в следующем формате Название_файлов|*.расширение. Например, Текстовые файлы(*.txt)|*.txt . Можно задать сразу несколько фильтров, для этого они разделяются вертикальной линией |. Например, Bitmap files (*.bmp)|*.bmp|Image files (*.jpg)|*.jpg
- InitialDirectory : устанавливает каталог, который отображается при первом вызове окна
- Title : заголовок диалогового окна
Отдельно у класса SaveFileDialog можно еще выделить пару свойств:
- CreatePrompt : при значении true в случае, если указан не существующий файл, то будет отображаться сообщение о его создании
- OverwritePrompt : при значении true в случае, если указан существующий файл, то будет отображаться сообщение о том, что файл будет перезаписан
Чтобы отобразить диалоговое окно, надо вызвать метод ShowDialog() .
Рассмотрим оба диалоговых окна на примере. Добавим на форму текстовое поле textBox1 и две кнопки button1 и button2. Также перетащим с панели инструментов компоненты OpenFileDialog и SaveFileDialog. После добавления они отобразятся внизу дизайнера формы. В итоге форма будет выглядеть примерно так:
Теперь изменим код формы:
public partial class Form1 : Form < public Form1() < InitializeComponent(); button1.Click += button1_Click; button2.Click += button2_Click; openFileDialog1.Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*"; saveFileDialog1.Filter = "Text files(*.txt)|*.txt|All files(*.*)|*.*"; >// сохранение файла void button2_Click(object sender, EventArgs e) < if (saveFileDialog1.ShowDialog() == DialogResult.Cancel) return; // получаем выбранный файл string filename = saveFileDialog1.FileName; // сохраняем текст в файл System.IO.File.WriteAllText(filename, textBox1.Text); MessageBox.Show("Файл сохранен"); >// открытие файла void button1_Click(object sender, EventArgs e) < if (openFileDialog1.ShowDialog() == DialogResult.Cancel) return; // получаем выбранный файл string filename = openFileDialog1.FileName; // читаем файл в строку string fileText = System.IO.File.ReadAllText(filename); textBox1.Text = fileText; MessageBox.Show("Файл открыт"); >>
По нажатию на первую кнопку будет открываться окно открытия файла. После выбора файла он будет считываться, а его текст будет отображаться в текстовом поле. Клик на вторую кнопку отобразит окно для сохранения файла, в котором надо установить его название. И после этого произойдет сохранение текста из текстового поля в файл.
Практическое руководство. Сохранение файлов с помощью компонента SaveFileDialog
Компонент SaveFileDialog позволяет пользователям просматривать файловую систему и выбирать файлы для сохранения. Диалоговое окно возвращает путь и имя файла, который пользователь выбрал в диалоговом окне. Тем не менее для фактического сохранения файла на диск необходимо написать специальный код.
Сохранение файла с помощью компонента SaveFileDialog
- Выведите на экран диалоговое окно Сохранить файл и вызовите метод для сохранения файла, выбранного пользователем. Для сохранения файла нужно использовать имеющийся в компоненте SaveFileDialog метод OpenFile. Этот метод предоставляет объект Stream, в который можно выполнить запись. В примере ниже показано, как для получения имени файла использовать свойство DialogResult, а метод OpenFile для сохранения файла. Метод OpenFile предоставляет поток для записи в него файла. В следующем примере приведен элемент управления Button, которому назначено изображение. При нажатии кнопки SaveFileDialog создается экземпляр компонента с фильтром, допускающим форматы файлов GIF, JPEG и BMP. При выборе файла такого типа в диалоговом окне «Сохранить файл» изображение кнопки сохраняется.
Важно! Для получения или задания свойства FileName сборке нужен уровень привилегий, предоставляемый классом System.Security.Permissions.FileIOPermission. Если процесс выполняется в контексте с частичным доверием, он может сгенерировать исключение из-за недостатка привилегий. Дополнительные сведения см. в разделе Code Access Security Basics.
В примере предполагается, что у формы есть элемент управления Button со свойством Image, заданным для файлов с типом GIF, JPEG и BMP.
Примечание. Имеющееся у класса FileDialog свойство FilterIndex (которое вследствие наследования является частью класса SaveFileDialog) использует отсчитываемый от единицы индекс. Это важно при написании кода для сохранения данных в определенном формате (например, в формате обычного текста или двоичном формате). Это свойство представлено в следующем примере.
Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click ' Displays a SaveFileDialog so the user can save the Image ' assigned to Button2. Dim saveFileDialog1 As New SaveFileDialog() saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif" saveFileDialog1.Title = "Save an Image File" saveFileDialog1.ShowDialog() ' If the file name is not an empty string open it for saving. If saveFileDialog1.FileName <> "" Then ' Saves the Image via a FileStream created by the OpenFile method. Dim fs As System.IO.FileStream = Ctype _ (saveFileDialog1.OpenFile(), System.IO.FileStream) ' Saves the Image in the appropriate ImageFormat based upon the ' file type selected in the dialog box. ' NOTE that the FilterIndex property is one-based. Select Case saveFileDialog1.FilterIndex Case 1 Me.button2.Image.Save(fs, _ System.Drawing.Imaging.ImageFormat.Jpeg) Case 2 Me.button2.Image.Save(fs, _ System.Drawing.Imaging.ImageFormat.Bmp) Case 3 Me.button2.Image.Save(fs, _ System.Drawing.Imaging.ImageFormat.Gif) End Select fs.Close() End If End Sub
private void button2_Click(object sender, System.EventArgs e) < // Displays a SaveFileDialog so the user can save the Image // assigned to Button2. SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif"; saveFileDialog1.Title = "Save an Image File"; saveFileDialog1.ShowDialog(); // If the file name is not an empty string open it for saving. if(saveFileDialog1.FileName != "") < // Saves the Image via a FileStream created by the OpenFile method. System.IO.FileStream fs = (System.IO.FileStream)saveFileDialog1.OpenFile(); // Saves the Image in the appropriate ImageFormat based upon the // File type selected in the dialog box. // NOTE that the FilterIndex property is one-based. switch(saveFileDialog1.FilterIndex) < case 1 : this.button2.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg); break; case 2 : this.button2.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Bmp); break; case 3 : this.button2.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Gif); break; >fs.Close(); > >
private: System::Void button2_Click(System::Object ^ sender, System::EventArgs ^ e) < // Displays a SaveFileDialog so the user can save the Image // assigned to Button2. SaveFileDialog ^ saveFileDialog1 = new SaveFileDialog(); saveFileDialog1->Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif"; saveFileDialog1->Title = "Save an Image File"; saveFileDialog1->ShowDialog(); // If the file name is not an empty string, open it for saving. if(saveFileDialog1->FileName != "") < // Saves the Image through a FileStream created by // the OpenFile method. System::IO::FileStream ^ fs = safe_cast\( saveFileDialog1->OpenFile()); // Saves the Image in the appropriate ImageFormat based on // the file type selected in the dialog box. // Note that the FilterIndex property is one based. switch(saveFileDialog1->FilterIndex) < case 1 : this->button2->Image->Save(fs, System::Drawing::Imaging::ImageFormat::Jpeg); break; case 2 : this->button2->Image->Save(fs, System::Drawing::Imaging::ImageFormat::Bmp); break; case 3 : this->button2->Image->Save(fs, System::Drawing::Imaging::ImageFormat::Gif); break; > fs->Close(); > >
(Visual C# и Visual C++) Поместите следующий код в конструктор формы для регистрации обработчика событий.
this.button2.Click += new System.EventHandler(this.button2_Click);
this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
Дополнительные сведения о записи файловых потоков см. в разделах BeginWrite и Write.
Примечание. У отдельных элементов управления, например у RichTextBox, имеется возможность сохранения файлов.
См. также
- SaveFileDialog
- Компонент SaveFileDialog
Как сохранить файл в 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 Русаков Михаил Юрьевич. Все права защищены.
Практическое руководство. Сохранение файлов с помощью элемента управления 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, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.