Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка ПрИн академия 2013.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
5.56 Mб
Скачать
  1. Работа с файлами документа

Создание нового документа

Если пользователь выберет строку Новый  из меню Файл, редактор текста SimpleNotepad должен создать новый текстовый документ. В простейшем случае для этого достаточно просто очистить содержимое окна редактирования, вызвав метод Clear:

private void menuFileNew_Click(object sender, EventArgs e)

{

richTextBoxStream.Clear();

}

Метод Clear вызывается для объекта richTextBoxStream, т.е. для нашего окна редактирования, занимающего все пространство формы.

Открытие существующего файла

Для того чтобы реализовать в нашем редакторе текста функцию открытия файла, потребуется компонент OpenFileDialog. Перетащите значок этого компонента из панели Toolbox в рабочее окно дизайнера формы.

Значок компонента OpenFileDialog будет показан в нижней части формы (рис.4.14), причем этот компонент получит идентификатор openFileDialog1. Этот идентификатор будет использован нами в программном коде, открывающем исходный файл.

Рисунок 4.14 - Добавление компонента OpenFileDialog

Добавьте в класс SimpleNotepadForm новый метод MenuFileOpen, предназначенный для открытия существующего файла. Вот его исходный текст:

//меню Открыть

private void menuFileOpen_Click(object sender, EventArgs e)

{

MenuEileOPen(); // вызов метода открытия файла

}

private void MenuFileOpen()

{

openFileDialogl.FileName = “”;

openFileDialogl.Multiselect = false; // запрещено выбирать боль-

// ше 1-го файла

If (openFileDialogl.ShowDialog() == System.Windows.Forms.DialcgResult.0K && openFileDialogl.FileName.Length > 0)

{

try

{

// вывод текста

richTextBoxStream.LoadFile(openFileDialogl.FileName,

RichTextBoxStreamType.RichText);

}

catch (System.ArgumentException ex)

{

richTextBoxStream.LoadFile(openFileDialogl.FileName,

RichTextBoxStreamType.PlainText);

}

this. Text = “Файл [" + openFileDialogl.FileName + "]";

}

}

Если в окне выбора файла пользователь щелкнул кнопку Open, метод ShowDialog возвращает значение

System.Windows.Forms.DialogResult.OK.

В этом случае мы также дополнительно проверяем, что файл был выбран. Для этого мы сравниваем длину строки полного пути к выбранному файлу openFileDialog1.FileName.Length с нулем:

if(openFileDialog1.ShowDialog() ==   System.Windows.Forms.DialogResult.OK  &&   openFileDialog1.FileName.Length > 0)  {   … }

В том случае, когда пользователь выбрал файл, метод MenuFileOpen предпринимает попытку загрузить этот файл в редактор richTextBox1, вызывая для этого метод LoadFile:

try {   richTextBox1.LoadFile(openFileDialog1.FileName,       RichTextBoxStreamType.RichText); } catch (System.ArgumentException ex) {   richTextBox1.LoadFile(openFileDialog1.FileName,       RichTextBoxStreamType.PlainText); }

В качестве первого параметра этому методу передается путь к файлу, а в качестве второго - тип файла RichTextBoxStreamType.RichText. Этот тип соответствует формату RTF.

В том случае, если выбранный файл имеет формат, отличный от RTF, в методе LoadFile возникает исключение System.ArgumentException. Наш обработчик этого исключения выполняет повторную попытку загрузить файл, но на этот раз уже как обычный текст. Для этого мы передаем в качестве второго параметра методу LoadFile значение RichTextBoxStreamType.PlainText.

Если все сделано правильно, то после трансляции исходного приложения редактор сможет открывать существующие файлы для редактирования.

Как работает метод MenuFileOpen?

Получив управление, он вызывает метод openFileDialog1.ShowDialog, отображающий на экране стандартное диалоговое окно выбора файла (рис. 4.15).

Рисунок 4.15 - Стандартное диалоговое окно выбора файла

Настраивая свойства компонента openFileDialog1, можно изменять внешний вид этого окна.

Задайте фильтр имен открываемых файлов. Для этого выделите компонент openFileDialog  в окне дизайнера форм левой клавишей мыши, а затем измените свойство Filter. Присвойте этому свойству следующую текстовую строку:

RTF files|*.rtf|Text files|*.txt|All files|*.*

Строка фильтра состоит из блоков, разделенных символом |.

Первый блок задает название типа файла RTFfiles, отображаемое в поле Files of type диалогового окна выбора файла, а второе - маску для имен файлов. Таким образом, для открытия документов RTF используется маска *.rtf.

Далее следует название формата Text files, соответствующее обычным текстовым файлам. Для этого формата применяется маска *.txt.

И, наконец, чтобы приложение могло открывать файлы любых типов (All files), используется маска *.*.

Продолжим работу. Оттранслируйте и запустите наше приложение. Выбрав с помощью только что описанного окна текстовый файл или файл RTF, щелкните кнопку Open. Выбранный файл будет загружен в окно нашего редактора текста (рис.4.16).

Рисунок 4.16 - Загружен файл для редактирования

Полный путь к редактируемому файлу будет отображен в заголовке главного окна нашего приложения.

Сохранение файла

Чтобы добавить в наше приложение возможность сохранения документов, перетащите из панели инструментов Toolbox в окно дизайнера форм компонент SaveFileDialog. Этот компонент получит идентификатор saveFileDialog1(рис. 4.17).

Рисунок 4.17 - Добавление омпонента SaveFileDialog

После добавления этого компонента отредактируйте его свойства Filter и FileName.

Свойство Filter должно иметь значение, обеспечивающее работу с документами RTF и текстовыми файлами: RTF files|*.rtf|Text files|*.txt

Для свойства FileNam задайте значение doc. При этом по умолчанию документы будут сохраняться в файле с этим именем (рис. 4.18).

Для сохранения документов в файле добавьте в класс SimpleNotepadForm следующий метод с именем MenuFileSaveAs:

private void menuFileSave_Click(object sender, EventArgs e)

{

MenuFileSaveAs();

}

// Сохранениедокумента в новом файле

private void MenuFileSaveAs()

{

saveFileDialogl.Filter = "RTF filesl..rtflText fileslk.txt";

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

&& saveFileDialog1.FileName.Length 1 0) {

switch (saveFileDialog1.FilterIndex)

{

case 1:

richTextBoxStream.SaveFile(saveFileDialogl.FileName,

RichTextBoxStreamType.RichText);

case 2:

richTextBoxStream.SaveFile(saveFileDialogl.FileName,

RichTextBoxitreamType.UnicodePlainText);

break;

}

}

this.Text = ",Daikm [" + saveFileDialogl.FileName + "]"

};

Рисунок 4.18 - Стандартное диалоговое окно сохранения файла

Здесь метод saveFileDialog1.ShowDialog отображает стандартный диалог сохранения файлов, показанный на рисунке 4.18. Если пользователь указал имя файла и щелкнул в этом диалоге кнопку «Сохранить», метод MenuFileSaveAs сохраняет документ в файле, вызывая для этого метод richTextBox1.SaveFile.

Далее этот метод отображает имя сохраненного файла в заголовке окна нашего приложения:

this.Text = "Файл [" + saveFileDialog1.FileName + "]";

Заметим, что существует несколько перегруженных вариантов метода SaveFile.

Если методу SaveFile задан один параметр (путь к сохраняемому файлу), то документ будет сохранен в формате RTF.

Второй параметр позволяет выбрать тип сохраняемого файла.

Если передать через этот параметр значение RichTextBoxStreamType.PlainText, документ будет сохранен в виде текстового файла с потерей форматирования.

В том случае, когда нужно сохранить документ в формате RTF, используйте значение RichTextBoxStreamType.RichText.

Можно также сохранить документ и как текст Unicode, для чего нужно передать через второй параметр методу SaveFile значение RichTextBoxStreamType.UnicodePlainText.

Определив в исходном тексте нашего приложения метод MenuFileSaveAs, добавьте его вызов в обработчики событий от строк Сохранить и Сохранить как.

Для простоты мы сделаем функции этих строк меню одинаковыми.