Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНАЯ РАБОТА 2 (ТП) .doc
Скачиваний:
4
Добавлен:
26.08.2019
Размер:
1.77 Mб
Скачать
    1. Вставка поля редактирования

Редактирование текста в нашем приложении будет выполнять компонент RichTextBox.

Перетащите из панели Toolbox в форму приложения simpleNotepad компонент RichTextBox и назовем его RichTextBoxStream.

Настройте свойства компонента, чтобы он занимал все окно приложения - отредактируйте свойство Dock. Это свойство задает расположение выбранного компонента внутри содержащей его формы (рисунок 1.12).

Рисунок 1.12 - Редактирование свойства Dock

Запустите полученное приложение на выполнение. В результате на экране должно появиться окно, показанное на рисунке 1.13 (в нем мы уже набрали две строки текста).

Рисунок 1.13 - Текстовый редактор

Работа над дизайном редактора текста завершена

    1. Обработка событий

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

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

{

// код обработки события

}

Обработчик событий — это метод, связанный с событием. При возникновении события выполняется код внутри обработчика событий. В каждом обработчике событий существует два параметра, которые позволяют правильно обработать событие.

Первый параметр, sender, предоставляет ссылку на объект, вызвавший событие.

Второй параметр, e, в примере передает объект, связанный с обрабатываемым событием. С помощью ссылки на свойства объекта (а также на его методы) можно получить сведения, например о расположении мыши в событиях, вызываемых с помощью мыши, или о данных, которые передаются в ходе событий, возникающих при перетаскивании.

  1. Работа с файлами документа

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

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

private void menuFileNew_Click(object sender, EventArgs e)

{

richTextBoxStream.Clear();

}

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

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

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

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

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

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

Если в окне выбора файла пользователь щелкнул кнопку 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, отображающий на экране стандартное диалоговое окно выбора файла (рисунок 2.2).

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

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

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

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

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

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

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

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

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

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

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