- •Содержание
- •Введение
- •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 Тестирование программ
- •Список литературы
Работа с файлами документа
Создание нового документа
Если пользователь выберет строку Новый из меню Файл, редактор текста SimpleNotepad должен создать новый текстовый документ. В простейшем случае для этого достаточно просто очистить содержимое окна редактирования, вызвав метод Clear:
private void menuFileNew_Click(object sender, EventArgs e)
{
richTextBoxStream.Clear();
}
Метод Clear вызывается для объекта richTextBoxStream, т.е. для нашего окна редактирования, занимающего все пространство формы.
Открытие существующего файла
Для того чтобы реализовать в нашем редакторе текста функцию открытия файла, потребуется компонент OpenFileDialog. Перетащите значок этого компонента из панели Toolbox в рабочее окно дизайнера формы.
Значок компонента OpenFileDialog будет показан в нижней части формы (рис.4.14), причем этот компонент получит идентификатор openFileDialog1. Этот идентификатор будет использован нами в программном коде, открывающем исходный файл.
Рисунок 4.14 - Добавление компонента OpenFileDialog
Добавьте в класс SimpleNotepadForm новый метод MenuFileOpen, предназначенный для открытия существующего файла. Вот его исходный текст:
//меню Открыть
private void menuFileOpen_Click(object sender, EventArgs e)
{
MenuEileOPen(); // вызов метода открытия файла
}
private void MenuFileOpen()
{
openFileDialogl.FileName = “”;
openFileDialogl.Multiselect = false; // запрещено выбирать боль-
// ше 1-го файла
If (openFileDialogl.ShowDialog() == System.Windows.Forms.DialcgResult.0K && openFileDialogl.FileName.Length > 0)
{
try
{
// вывод текста
richTextBoxStream.LoadFile(openFileDialogl.FileName,
RichTextBoxStreamType.RichText);
}
catch (System.ArgumentException ex)
{
richTextBoxStream.LoadFile(openFileDialogl.FileName,
RichTextBoxStreamType.PlainText);
}
this. Text = “Файл [" + openFileDialogl.FileName + "]";
}
}
Если в окне выбора файла пользователь щелкнул кнопку 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, отображающий на экране стандартное диалоговое окно выбора файла (рис. 4.15).
Рисунок 4.15 - Стандартное диалоговое окно выбора файла
Настраивая свойства компонента openFileDialog1, можно изменять внешний вид этого окна.
Задайте фильтр имен открываемых файлов. Для этого выделите компонент openFileDialog в окне дизайнера форм левой клавишей мыши, а затем измените свойство Filter. Присвойте этому свойству следующую текстовую строку:
RTF files|*.rtf|Text files|*.txt|All files|*.*
Строка фильтра состоит из блоков, разделенных символом |.
Первый блок задает название типа файла RTFfiles, отображаемое в поле Files of type диалогового окна выбора файла, а второе - маску для имен файлов. Таким образом, для открытия документов RTF используется маска *.rtf.
Далее следует название формата Text files, соответствующее обычным текстовым файлам. Для этого формата применяется маска *.txt.
И, наконец, чтобы приложение могло открывать файлы любых типов (All files), используется маска *.*.
Продолжим работу. Оттранслируйте и запустите наше приложение. Выбрав с помощью только что описанного окна текстовый файл или файл RTF, щелкните кнопку Open. Выбранный файл будет загружен в окно нашего редактора текста (рис.4.16).
Рисунок 4.16 - Загружен файл для редактирования
Полный путь к редактируемому файлу будет отображен в заголовке главного окна нашего приложения.
Сохранение файла
Чтобы добавить в наше приложение возможность сохранения документов, перетащите из панели инструментов Toolbox в окно дизайнера форм компонент SaveFileDialog. Этот компонент получит идентификатор saveFileDialog1(рис. 4.17).
Рисунок 4.17 - Добавление омпонента SaveFileDialog
После добавления этого компонента отредактируйте его свойства Filter и FileName.
Свойство Filter должно иметь значение, обеспечивающее работу с документами RTF и текстовыми файлами: RTF files|*.rtf|Text files|*.txt
Для свойства FileNam задайте значение doc. При этом по умолчанию документы будут сохраняться в файле с этим именем (рис. 4.18).
Для сохранения документов в файле добавьте в класс SimpleNotepadForm следующий метод с именем MenuFileSaveAs:
private void menuFileSave_Click(object sender, EventArgs e)
{
MenuFileSaveAs();
}
// Сохранениедокумента в новом файле
private void MenuFileSaveAs()
{
saveFileDialogl.Filter = "RTF filesl..rtflText fileslk.txt";
if (saveFileDialogl.ShowDialog() == DialogResult.OK
&& saveFileDialog1.FileName.Length 1 0) {
switch (saveFileDialog1.FilterIndex)
{
case 1:
richTextBoxStream.SaveFile(saveFileDialogl.FileName,
RichTextBoxStreamType.RichText);
case 2:
richTextBoxStream.SaveFile(saveFileDialogl.FileName,
RichTextBoxitreamType.UnicodePlainText);
break;
}
}
this.Text = ",Daikm [" + saveFileDialogl.FileName + "]"
};
Рисунок 4.18 - Стандартное диалоговое окно сохранения файла
Здесь метод saveFileDialog1.ShowDialog отображает стандартный диалог сохранения файлов, показанный на рисунке 4.18. Если пользователь указал имя файла и щелкнул в этом диалоге кнопку «Сохранить», метод MenuFileSaveAs сохраняет документ в файле, вызывая для этого метод richTextBox1.SaveFile.
Далее этот метод отображает имя сохраненного файла в заголовке окна нашего приложения:
this.Text = "Файл [" + saveFileDialog1.FileName + "]";
Заметим, что существует несколько перегруженных вариантов метода SaveFile.
Если методу SaveFile задан один параметр (путь к сохраняемому файлу), то документ будет сохранен в формате RTF.
Второй параметр позволяет выбрать тип сохраняемого файла.
Если передать через этот параметр значение RichTextBoxStreamType.PlainText, документ будет сохранен в виде текстового файла с потерей форматирования.
В том случае, когда нужно сохранить документ в формате RTF, используйте значение RichTextBoxStreamType.RichText.
Можно также сохранить документ и как текст Unicode, для чего нужно передать через второй параметр методу SaveFile значение RichTextBoxStreamType.UnicodePlainText.
Определив в исходном тексте нашего приложения метод MenuFileSaveAs, добавьте его вызов в обработчики событий от строк Сохранить и Сохранить как.
Для простоты мы сделаем функции этих строк меню одинаковыми.
