- •Создание Windows-приложения «Редактор текста» в среде разработки Visual Studio содержание
- •Создание редактора текста
- •Добавление меню
- •Переименование меню и строк меню
- •Вставка поля редактирования
- •Обработка событий
- •Работа с файлами документа
- •Создание нового документа
- •Открытие существующего файла
- •Сохранение файла
- •Печать документа
- •Печать документа Добавление программных компонентов для печати
- •Настройка параметров страницы документа
- •Предварительный просмотр документа перед печатью
- •Отображение окна печати документа
- •Закрытие главного окна редактора текста
- •Закрытие главного окна формы
- •Реализация функция меню «правка»
- •Реализация функций меню «правка»
- •Реализация функций меню формат
- •Шрифт символов
- •Цвет символов
- •Стиль символов
- •Выравнивание параграфов
- •Реализация функций меню «справка»
- •Добавление новой формы
- •Отображение формы
- •Создание инструментальной панели
- •Добавление инструментальной панели в окно приложения
- •Добавление изображений в проект.
- •Редактирование кнопок инструментальной панели
- •Строка состояния
- •Строка состояния
Отображение окна печати документа
Для отображения стандартного диалогового окна печати документов добавьте в класс SimpleNotepadForm следующий код:
Запустите полученное приложение на выполнение.
Закрытие главного окна редактора текста
Закрытие главного окна формы
Окно нашего редактора текста должно быть закрыто, когда пользователь выбирает из меню Файл строку Выход. Это легко достигается добавлением метода Close в тело обработчика сообщения menuFileExit_Click:
Однако здесь возникает проблема: окно редактора текста будет закрыто и в том случае, если пользователь не сохранил сделанные им изменения.
Чтобы решить эту проблему, нам нужно каким-то образом отслеживать наличие изменений в окне редактирования текста.
Определим в классе SimpleNotepadForm поле m_DocumentChanged, в котором будем хранить флаг, отмечающий изменения, сделанные пользователем в документе:
public SimpleNotepadForm()
{
InitializeComponent();
….
}
private bool m_DocumentChanged = false; // ПОЛЕ которое добавили после класса SimpleNotepadForm
В новом или только что загруженном документе изменений нет, поэтому начальное значение этого флага равно false.
Далее откройте окно визуального проектирования формы и щелкните дважды левой клавишей мыши редактор текста richTextBox1. В результате дизайнер форм создаст для нас обработчик события richTextBox1_TextChanged. Этот обработчик получит управление, как только пользователь внесет любые изменения в содержимое редактируемого документа.
Вам остается только обеспечить изменение состояния флага m_DocumentChanged внутри этого обработчика:
Если пользователь редактировал документ, а потом решил создать новый, выбрав из меню Файл строку Новый, изменения, внесенные в старый документ, могут быть потеряны. Чтобы избежать этого, проверьте флаг m _DocumentChanged перед тем как очищать содержимое редактора текста. Если в редакторе есть не сохраненные изменения, необходимо вызвать метод MenuFileSaveAs, предназначенный для сохранения документа:
После того как пользователь сохранил изменения в документе, флаг m_DocumentChanged необходимо сбросить. Для этого отредактируйте исходный текст метода MenuFileSaveAs, добавив в него строку сброса указанного флага:
Добавили
строку
Теперь, когда пользователь попытается закрыть программу редактора с помощью строки Выход меню Файл или с помощью соответствующей кнопки строки заголовка окна, не сохранив сделанные изменения, на экране появится стандартное диалоговое окно, предлагающее ему сохранить документ.
Доработаем наш код, чтобы при закрытии окна выводилось сообщение, добавим обработчик формы событие SimpleNotepad_FormClosing
При закрытии формы появляется событие:
При выборе ответа «Да», откроется окно сохранения файла, при выборе ответа «Нет», форма закроется, «Отмена» - вернемся на форму.
Аналогичным образом добавьте вывод сообщения в пункт меню Файл – Выход.
Реализация функция меню «правка»
Реализация функций меню «правка»
Реализация функций меню Правка, стандартных для всех редакторов текста и многих других приложений, в нашем случае получается очень простой, т.к. элемент управления RichTextBox имеет в своем составе все необходимые методы.
Все, что Вам нужно сделать, это вызвать эти методы в соответствующих обработчиках событий.
Подготовьте обработчики событий от всех строк меню Правка следующим образом:
Теперь наше приложение Simple Notepad сможет обмениваться текстовыми и графическими данными с другими приложениями Microsoft Windows через универсальный буфер обмена Clipboard.
Рисунок 23 - Мы вставили в документ текст и графическое изображение