Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНЫЕ РАБОТЫ по РПП.doc
Скачиваний:
77
Добавлен:
09.05.2015
Размер:
1.72 Mб
Скачать

Отображение окна печати документа

Для отображения стандартного диалогового окна печати документов добавьте в класс SimpleNotepadForm следующий код:

Запустите полученное приложение на выполнение.

  1. Закрытие главного окна редактора текста

    1. Закрытие главного окна формы

Окно нашего редактора текста должно быть закрыто, когда пользователь выбирает из меню Файл строку Выход. Это легко достигается добавлением метода 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

При закрытии формы появляется событие:

При выборе ответа «Да», откроется окно сохранения файла, при выборе ответа «Нет», форма закроется, «Отмена» - вернемся на форму.

Аналогичным образом добавьте вывод сообщения в пункт меню Файл – Выход.

    1. Реализация функция меню «правка»

  1. Реализация функций меню «правка»

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

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

Подготовьте обработчики событий от всех строк меню Правка следующим образом:

Теперь наше приложение Simple Notepad сможет обмениваться текстовыми и графическими данными с другими приложениями Microsoft Windows через универсальный буфер обмена Clipboard.

Рисунок 23 - Мы вставили в документ текст и графическое изображение