- •Содержание
- •Создание редактора текста
- •Добавление меню
- •Переименование меню и строк меню
- •Вставка поля редактирования
- •Обработка событий
- •Работа с файлами документа
- •Создание нового документа
- •Открытие существующего файла
- •Сохранение файла
- •Печать документа
- •Печать документа
- •Добавление программных компонентов для печати
- •Настройка параметров страницы документа
- •Предварительный просмотр документа перед печатью
- •Отображение окна печати документа
- •Закрытие главного окна редактора текста
- •Закрытие главного окна формы
- •Реализация функция меню «правка»
- •Реализация функций меню «правка»
- •Реализация функций меню формат
- •Шрифт символов
- •Цвет символов
- •Стиль символов
- •Выравнивание параграфов
- •Реализация функций меню «справка»
- •Добавление новой формы
- •Отображение формы
- •Создание инструментальной панели
- •Добавление инструментальной панели в окно приложения
- •Добавление изображений в проект.
- •Редактирование кнопок инструментальной панели
- •Строка состояния
- •Строка состояния
Вставка поля редактирования
Редактирование текста в нашем приложении будет выполнять компонент RichTextBox.
Перетащите из панели Toolbox в форму приложения simpleNotepad компонент RichTextBox и назовем его RichTextBoxStream.
Настройте свойства компонента, чтобы он занимал все окно приложения - отредактируйте свойство Dock. Это свойство задает расположение выбранного компонента внутри содержащей его формы (рисунок 1.12).
Рисунок 1.12 - Редактирование свойства Dock
Запустите полученное приложение на выполнение. В результате на экране должно появиться окно, показанное на рисунке 1.13 (в нем мы уже набрали две строки текста).
Рисунок 1.13 - Текстовый редактор
Работа над дизайном редактора текста завершена
Обработка событий
Создайте обработчик события для строки меню, для этого ее нужно щелкнуть дважды левой клавишей мыши. Все обработчики событий создаются с пустым телом:
private void menuFileNew_Click(object sender, System.EventArgs e)
{
… // код обработки события
}
Обработчик событий — это метод, связанный с событием. При возникновении события выполняется код внутри обработчика событий. В каждом обработчике событий существует два параметра, которые позволяют правильно обработать событие.
Первый параметр, sender, предоставляет ссылку на объект, вызвавший событие.
Второй параметр, e, в примере передает объект, связанный с обрабатываемым событием. С помощью ссылки на свойства объекта (а также на его методы) можно получить сведения, например о расположении мыши в событиях, вызываемых с помощью мыши, или о данных, которые передаются в ходе событий, возникающих при перетаскивании.
Работа с файлами документа
Создание нового документа
Если пользователь выберет строку Новый из меню Файл, наш редактор текста SimpleNotepad должен создать новый текстовый документ. В простейшем случае для этого достаточно просто очистить содержимое окна редактирования, вызвав метод Clear:
private void menuFileNew_Click(object sender, EventArgs e)
{
richTextBoxStream.Clear();
}
Метод Clear вызывается для объекта richTextBoxStream, т.е. для нашего окна редактирования, занимающего все пространство формы.
Открытие существующего файла
Для того чтобы реализовать в нашем редакторе текста функцию открытия файла, нам потребуется компонент 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 - Загружен файл для редактирования
Полный путь к редактируемому файлу будет отображен в заголовке главного окна нашего приложения.