Как сохранить файл в 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("Файл открыт"); >>
По нажатию на первую кнопку будет открываться окно открытия файла. После выбора файла он будет считываться, а его текст будет отображаться в текстовом поле. Клик на вторую кнопку отобразит окно для сохранения файла, в котором надо установить его название. И после этого произойдет сохранение текста из текстового поля в файл.
Открыть/Сохранить файл
Как в datagridview открыть Excel файл? И сохранить его
Как в datagridview c# открыть Excel файл? И сохранить.
Открыть текстовый файл — удалить пробелы в конце строк — сохранить
Вопрос от студентоты. Ничего толком не знаю насчет файловой, нужно написать программу в форме.
Открыть картинку, обрезать и сохранить
static Image ScaleImage(Image source, int width, int height) < .

Открыть картинку, изменить её в нужной пропорции и сохранить
Подскажите пожалуйста, можно ли открыть картинку и изменить её в нужно мне пропорции и сохранить.
Практическое руководство. Сохранение файлов с помощью компонента 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
На этом шаге мы рассмотрим назначение и использование этого компонента .
Компонент находится в списке 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 .
