
- •Содержание
- •Введение
- •2. Основные контролы (компоненты) Windows- приложения
- •2.2. Контрол TextBox
- •2. 3. Контрол ComboBox
- •2.4. Контрол ListBox
- •Панели GroupBox и Panel
- •2. 6. Класс Random и его функции
- •Вывод текстовой информации
- •3.1. Вывод текстовой информации в контрол Label
- •3.2. Вывод текстовой информации в контрол TextBox
- •3.3. Программный вывод текста в TextBox
- •3.4. Вывод текстовой информации в контрол RichTextBox
- •Лабораторная работа № 2 Работа с контролами CheckBox, RadioButton и диалоговыми окнами MessageBox
- •1. Контрол CheckBox
- •2. Контрол RadioButton
- •3. Диалоговые окна MessageBox
- •Лабораторная работа № 3 Построение графиков функций
- •Лабораторная работа № 4 Создание Windows приложения «Редактор текста» в среде разработки Visual Studio
- •Создание редактора текста
- •Работа с файлами документа
- •Печать документа
- •Закрытие главного окна редактора текста
- •Реализация функций меню «Правка»
- •Реализация функций меню «Формат»
- •Выравнивание параграфов
- •Реализация функций меню «Справка»
- •Создание инструментальной панели
- •Строка состояния
- •Лабораторная работа № 5
- •Создание диаграммы вариантов использования
- •В среде проектирования Rational Rose
- •Общие сведения о Rational Rose
- •Диаграммы вариантов использования
- •Пример диаграммы ви для финансовой торговой системы приведен на рис.5.3.
- •Связи «расширение» и «использование». Кроме связей между действующими лицами и ви на диаграмме существуют 2 других типа связей. Это связи «расширение» и «использование».
- •Создание диаграммы вариантов использования
- •Добавление ассоциаций
- •Добавление связи расширения
- •Добавление описаний к вариантам использования
- •Добавление описаний к действующему лицу
- •Прикрепление файла к варианту использования
- •Лабораторная работа № 6 Создание диаграммы классов в среде проектирования Rational Rose
- •Создание диаграммы классов Настройка
- •Технология создания диаграммы классов
- •Добавление атрибутов и операций
- •Настройка
- •Добавление нового класса
- •Добавление атрибутов
- •Добавление операций к классу Orderltem
- •Подробное описание операций с помощью диаграммы классов
- •Подробное описание операций с помощью браузера
- •Подробное описание операций
- •Добавление связей
- •Добавление ассоциаций
- •Лабораторная работа№ 7 Создание диаграмм взаимодействия в Rational Rose
- •Создание диаграммы взаимодействия
- •Настройка
- •Создание диаграммы Последовательности
- •Добавление на диаграмму действующего лица и объектов
- •Добавление сообщений на диаграмму
- •Добавление на диаграмму дополнительных объектов
- •Назначение ответственностей объектам
- •Соотнесение объектов с классами
- •Соотнесение сообщений с операциями
- •Создание кооперативной диаграммы
- •Создание кооперативной диаграммы
- •Добавление действующего лица и объектов на диаграмму
- •Добавление сообщений на диаграмму
- •Добавление на диаграмму дополнительных объектов.
- •Назначение ответственностей объектам
- •Соотнесение объектов с классами (если классы были созданы при разработке описанной выше диаграммы последовательности)
- •Соотнесение объектов с классами (если вы не создавали описанную выше диаграмму последовательности)
- •Соотнесение сообщений с операциями (если операции были созданы при разработке описанной выше диаграммы последовательности)
- •Соотнесение сообщений с операциями (если вы не создавали описанную выше диаграмму последовательности)
- •Лабораторная работа№ 8 Создание диаграмм состояний в Rational Rose
- •Описание состояний
- •Добавление переходов
- •Описание переходов
- •Лабораторная работа № 9 Тестирование программ
- •Лабораторная работа № 11 Тестирование программ
- •Лабораторная работа № 12 Тестирование программ
- •Список литературы
Закрытие главного окна редактора текста
ЗАКРЫТИЕ ГЛАВНОГО ОКНА ФОРМЫ
Окно нашего редактора текста должно быть закрыто, когда пользователь выбирает из меню Файл строку Выход. Это легко достигается добавлением метода Close в тело обработчика сообщения menuFileExit_Click:
private void menuFileExit_Click(object sender, EventArgs e)
{
this.Close(); //Изменения в документе будут потеряны
}
Однако здесь возникает проблема: окно редактора текста будет закрыто и в том случае, если пользователь не сохранил сделанные им изменения.
Чтобы решить эту проблему, нам нужно каким-то образом отслеживать наличие изменений в окне редактирования текста.
Определим в классе SimpleNotepadForm поле m_DocumentChanged, в котором будем хранить флаг, отмечающий изменения, сделанные пользователем в документе:
public SimpleNotepadForm()
{
InitializeComponent();
….
}
private bool m_DocumentChanged = false; // Поле которое добавили после класса SimpleNotepadForm
В новом или только что загруженном документе изменений нет, поэтому начальное значение этого флага равно false.
Далее откройте окно визуального проектирования формы и щелкните дважды левой клавишей мыши редактор текста richTextBox1. В результате дизайнер форм создаст для нас обработчик события richTextBox1_TextChanged. Этот обработчик получит управление, как только пользователь внесет любые изменения в содержимое редактируемого документа.
Вам остается только обеспечить изменение состояния флага m_DocumentChanged внутри этого обработчика:
private vcid richiextBoxStreamiextChanged(object sender, EventArgs e)
{
m_DocumentChanged = true,
}
Если пользователь редактировал документ, а потом решил создать новый, выбрав из меню Файл строку Новый, изменения, внесенные в старый документ, могут быть потеряны. Чтобы избежать этого, проверьте флаг m _DocumentChanged перед тем как очищать содержимое редактора текста. Если в редакторе есть не сохраненные изменения, необходимо вызвать метод MenuFileSaveAs, предназначенный для сохранения документа:
private void menuFileNew_Click(object sender, EventArgs e);
{
if (m_DocumentChanged)
{
MenuFileSaveAs();
richiextBoxStream.Clear();
}
}
После того как пользователь сохранил изменения в документе, флаг m_DocumentChanged необходимо сбросить. Для этого отредактируйте исходный текст метода MenuFileSaveAs, добавив в него строку сброса указанного флага:
/
Добавили
строку
private void MenuFileSaveAs()
{
saveFileDialogl.Filter = "RTF files|*.rtf|Text files |*.txt”;
if (saveFileDialogl.ShowDialog() == DialogResult.OK
&& saveFileDialcgl.FileName.Length > 0)
{
switch (saveFileDialcgl.FilterIndex)
{
case 1;
richTextBoxStream.SaveFile(saveFileDialogl.FileName,
RichTextBoxStreamType.RichText);
m_DocumentChanged = false;
break;
case 2;
richTextBoxStream.SaveFile(saveFileDialcgl.FileName,
RichTextRoxStreamType.UnicodePlainIext);
m_DocumentChanged = false;
break;
}
}
this. Text = "Файл [" + saveFileDialog1.FileName + "]";
}
Теперь, когда пользователь попытается закрыть программу редактора с помощью строки Выход меню Файл или с помощью соответствующей кнопки строки заголовка окна, не сохранив сделанные изменения, на экране появится стандартное диалоговое окно, предлагающее ему сохранить документ.
Доработаем наш код, чтобы при закрытии окна выводилось сообщение, добавим обработчик формы событие SimpleNotepad_FormClosing:
private void SirpleNotepad_FormClosing(object sender, FormClosingEventArgs e)
{
if (m_DocumentChanged)
{
switch (MessageBox.Show("Сохранить изменеия в файле?”,
"Сообщение", MessageBщxButtщns.YesNoCancel))
{
case DialcgResult.Yes;
// "Yes" processing\
MenuFileSaveAs();
break;
case DialcgResult.Cancel;
e.Cancel = true; //Отмена = истина
break;
}
}
}
При закрытии формы появляется сообщение (рис. 4.20):
Рисунок 4.20 – Окно сообщения о сохранении изменений
При выборе ответа «Да», откроется окно сохранения файла, при выборе ответа «Нет», форма закроется, «Отмена» - вернемся на форму.
Аналогичным образом добавьте вывод сообщения в пункт меню Файл – Выход.
РЕАЛИЗАЦИЯ ФУНКЦИЯ МЕНЮ «ПРАВКА»