Лекция: SaveFileDialog

Для сохранения файлов добавляем на форму frmmain элемент управления saveFileDialog1. Cвойства этого диалога в точности такие же, как у OpenFileDialog (рис. 2.12). Переходим в код формы blank:

//Создаем метод Save, в качестве параметра объявляем строку адреса файла.

public void Save(string SaveFileName)

{

//Если файл не выбран, возвращаемся назад (появится встроенное предупреждение)

if (SaveFileName == "")

{

return;

}

else

{

//Создаем новый объект StreamWriter и передаем ему переменную //OpenFileName

StreamWriter sw = new StreamWriter(SaveFileName);

//Содержимое richTextBox1 записываем в файл

sw.WriteLine(richTextBox1.Text);

//Закрываем поток

sw.Close();

//Устанавливаем в качестве имени документа название сохраненного файла

DocName = SaveFileName;

}

}

2.6.

Добавляем обработчик пункта меню Save формы frmmain:

private void mnuSave_Click(object sender, System.EventArgs e)

{

//Можно программно задавать доступные для обзора расширения файлов

//openFileDialog1.Filter = «Text Files (*.txt)|*.txt|All Files(*.*)|*.*»;

//Если выбран диалог открытия файла, выполняем условие

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

//Переключаем фокус на данную форму.

blank frm = (blank)this.ActiveMdiChild;

//Вызываем метод Save формы blank

frm.Save(saveFileDialog1.FileName);

//Указываем, что родительской формой является форма frmmain

frm.MdiParent = this;

//Присваиваем переменной FileName имя сохраняемого файла

frm.DocName = saveFileDialog1.FileName;

//Свойству Text формы присваиваем переменную DocName

frm.Text = frm.DocName;

 

}

}

Запускаем приложение. Теперь файлы можно открывать, редактировать и сохранять. Однако, при сохранении внесенных изменений в уже сохраненном файле вместо его перезаписи вновь появляется окно SaveFileDialog. Изменим нашу программу так, чтобы можно было сохранять и перезаписывать файл. В конструкторе формы frmmain после InitializeComponentотключим доступность пункта меню Save:

mnuSave.Enabled = false;

Переключаемся в режим дизайна формы frmmain и добавляем пункт меню Save As после пункта Save. Устанавливаем следующие свойства этого пункта: Name — mnuSaveAs, Shortcut — CtrlShiftS, Text Save &As. В обработчике Save As вставляем вырезанный обработчик пункта Save и добавляем включение доступности Save:

mnuSave.Enabled = true;

Сохранять изменения требуется как в только что сохраненных документах, так и в документах, созданных ранее и открытых для редактирования. Поэтому добавим в метод Open включение доступности пункта меню Save:

private void mnuOpen_Click(object sender, System.EventArgs e)

{

mnuSave.Enabled = true;

}

В обработчике пункта Save добавим простую перезапись файла — вызов метода Save формы blank:

private void mnuSave_Click(object sender, System.EventArgs e)

{

//Переключаем фокус на данную форму.

blank frm = (blank)this.ActiveMdiChild;

//Вызываем метод Save формы blank

frm.Save(frm.DocName);

 

}

Запускаем приложение. Теперь, если мы работаем с несохраненным документом, пункт Save неактивен (рис. 2.14), после сохранения он становится активным (рис. 2.15) и, кроме того, работает сочетание клавиш Ctrl+S. Можно сохранить копию текущего документа, вновь воспользовавшись пунктом меню Save As (рис. 2.16).


Рис. 2.14.Новый документ


Рис. 2.15.Сохраненный документ


Рис. 2.16.Сохранение копии

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

еще рефераты
Еще работы по информатике