Как сохранить файл в c windows form
Перейти к содержимому

Как сохранить файл в c windows form

Как сохранить файл в 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. После добавления они отобразятся внизу дизайнера формы. В итоге форма будет выглядеть примерно так:

OpenFileDialog и SaveFileDialog в Windows Forms

Теперь изменим код формы:

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("Файл открыт"); >>

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

Как сохранить файл в 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 .

Открыть/Сохранить файл

Как в datagridview открыть Excel файл? И сохранить его
Как в datagridview c# открыть Excel файл? И сохранить.

Открыть текстовый файл — удалить пробелы в конце строк — сохранить
Вопрос от студентоты. Ничего толком не знаю насчет файловой, нужно написать программу в форме.

Открыть картинку, обрезать и сохранить
static Image ScaleImage(Image source, int width, int height) < .

Открыть картинку, изменить её в нужной пропорции и сохранить
Подскажите пожалуйста, можно ли открыть картинку и изменить её в нужно мне пропорции и сохранить.

Как сохранить файл в 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.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *