Перейти к содержимому

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

  • автор:

Как реализовать сохранение файла С# 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("Файл сохранен"); > 

Еще советую не использовать русские буквы в названиях переменных, классов и прочих контролов.

Как сохранить файл в 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("Файл открыт"); >>

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

Компонент SaveFileDialog (Windows Forms)

Компонент Windows Forms SaveFileDialog является стандартным диалоговым окном. Он аналогичен диалоговому окну Сохранить файл, используемому в операционных системах Windows. Он наследуется от класса CommonDialog.

В этом разделе

Общие сведения о компоненте SaveFileDialog
Основные понятия, связанные с компонентом SaveFileDialog, который служит для вывода стандартного диалогового окна для сохранения файла в указанном пользователем месте.

Ссылка

Класс SaveFileDialog
Справочная информация о классе и его членах.

Связанные разделы

Элементы управления для использования в Windows Forms
Полный список элементов управления Windows Forms со ссылками на информацию об их применении.

Элементы управления и компоненты диалоговых окон
Описание набора элементов управления и компонентов для выполнения пользователем стандартных действий в приложении или системе.

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Практическое руководство. Сохранение файлов с помощью компонента 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

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

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

https://lechenie.narkolog-na-dom-voronezh-12.ru/