Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OOP / лаб_раб_5

.doc
Скачиваний:
36
Добавлен:
06.03.2016
Размер:
74.75 Кб
Скачать

Лабораторная работа 5

СОЗДАНИЕ ПРОСТОГО ТЕКСТОВОГО РЕДАКТОРА

Цель работы: получить практические навыки работы с окном редактирования RichTextBox.

Задачи работы:

– изучить классы библиотеки FCL RichTextBox, оpenFileDialog, saveFileDialog; fontDialog, colorDialog.

– выполнить практическое задание по разработке приложения на языке С#.

Порядок выполнения работы

1. Изучить теоретические сведения и примеры, представленные ниже.

2. Ответить на контрольные вопросы.

3. Разработать Windows-приложение в соответствии с заданием.

Окно редактирования RichTextBox

Элемент управления RichTextBox, как и элемент TextBox, рассмотренный нами в п. 11.3.4, предназначен для ввода и редактирования текстов, однако он обладает значительно более широкими возможностями. Этот элемент позволяет управлять начертанием (полужирный шрифт, курсив) и цветом символов, применять эффекты (например, верхние и нижние индексы), форматировать абзац (задавать величину отступов, межстрочные интервалами, загружать текст из файла и сохранять его в файле, и т. д.). В RichTextBox можно как задать формат вновь вводимого текста, так и изменить формат уже введенного, предварительно выделив его. Кроме того, этот элемент обеспечивает работу с текстами большого размера (в TextBox длина текста ограничена 64 знаками).

Работу с элементом управления RichTextBox рассмотрим на примере разработки законченного приложения − простого текстового редактора.

Создадим новый проект и в режиме дизайна разместим на форме элемент управления RichTextBox. Свойству Dock этого элемента установим значение Fill, и тогда элемент займет всю рабочую поверхность формы. Создадим меню (рис. 11.13).

Добавим на форму элементы управления оpenFileDialog, saveFileDialog из окна панели инструментов ToolBox, они будут располагаться на панели невидимых компонентов. Cвойство FileName задает название файла, которое будет находиться в поле Имя файла: при появлении диалога. Для элемента оpenFileDialog введем в это поле текст Текстовые файлы. Свойство Filter задает ограничение файлов, которые могут быть выбраны для открытия или сохранения файла, в результате в окне будут показываться только файлы с выбранным расширением. Через вертикальную разделительную линию укажем смену типа расширения, отображаемого в выпадающем списке Тип файлов: Text Files (*.txt)|*.txt|All Files(*.*)|*.*, что означает обзор либо текстовых, либо всех файлов. Свойство InitialDirectory позволяет задать директорию, откуда будет начинаться обзор. Если это свойство не установлено, то исходной директорией будет рабочий стол.

а б в

Рис. 11.13. Меню программы Текстовый редактор:

а – команды подменю Файл; б – команды подменю Редактирование;

в – команды подменю Форматирование

Добавим на форму элементы управления fontDialog для изменения шрифта выделенного фрагмента текста и colorDialog для изменения цвета выделенного фрагмента текста. В свойствах этих элементов ничего менять не нужно.

Для работы с файловыми потоками в коде формы подключим пространство имен System.IO:

using System.IO;

В классе формы выполним объявления:

private string BufferText = " "; // буфер для работы с текстом

// строка для сохранения имени файла открытого документа

public string DocName = " ";

Запишем методы-обработчики событий − щелчков по пунктам меню создаваемого текстового редактора (листинг 11.12)

Листинг 11.12. Коды обработчиков событий − выбора пунктов меню

// при выборе пункта меню Файл/Открыть считать содержимое файла

// в RichTextBox

private void открыть ToolStripMenuItem_Click(object sender, EventArgs e)

{

if (openFileDialog1.ShowDialog( ) == DialogResult.OK)

{

// если файл не выбран, то выйти из метода (появится встроенное

// предупреждение)

if (openFileDialog1.FileName == " ")

{return;}

else

{

// создать новый объект StreamReader и передать ему переменную

// openFileDialog1.FileName

StreamReader sr = new

StreamReader(openFileDialog1.FileName);

// читать весь файл и записать его в richTextBox1

richTextBox1.Text = sr.ReadToEnd( );

sr.Close( ); // закрыть поток

}

}

}

// при выборе пункта меню Файл/Сохранить сохранить

// содержимое RichTextBox в файле

private void сохранитьToolStripMenuItem_Click(object sender,

EventArgs e)

{

if (saveFileDialog1.ShowDialog( ) == DialogResult.OK)

{

// создать новый объект StreamWriter – поток для записи в файл –

// и передать ему переменную saveFileDialog1.FileName – имя

// сохраняемого файла

StreamWriter sw = new

StreamWriter(saveFileDialog1.FileName);

// содержимое richTextBox1 записать в файл

sw.WriteLine(richTextBox1.Text);

sw.Close( ); // закрыть поток

}

}

// выбор пункта меню Файл/Выход

private void выход ToolStripMenuItem_Click(object sender, EventArgs e)

{

Close( );

}

// выбор пункта меню Редактирование/Выделить все

private void выделить Все ToolStripMenuItem_Click

(object sender, EventArgs e)

{

richTextBox1.SelectAll( );

}

// выбор пункта меню Редактирование/Копировать

private void копировать ToolStripMenuItem_Click(object sender,

EventArgs e)

{

this.BufferText = richTextBox1.SelectedText;

}

// выбор пункта меню Редактирование/Вырезать

private void вырезать ToolStripMenuItem_Click(object sender, EventArgs e)

{

this.BufferText = richTextBox1.SelectedText;

richTextBox1.SelectedText = " ";

}

// выбор пункта меню Редактирование/Вставить

private void вставить ToolStripMenuItem_Click(object sender, EventArgs e)

{

richTextBox1.SelectedText = this.BufferText;

}

// выбор пункта меню Форматирование/Шрифт

private void шрифтToolStripMenuItem_Click(object sender,

EventArgs e)

{

{ // вызвать диалог для выбора шрифта

fontDialog1.ShowColor = true;

// связать свойства SelectionFont и SelectionColor элемента RichTextBox

// с соответствующими свойствами диалога

fontDialog1.Font = richTextBox1.SelectionFont;

fontDialog1.Color = richTextBox1.SelectionColor;

// если выбран диалог открытия файла, то проверить условие

if (fontDialog1.ShowDialog() == DialogResult.OK)

{

// установить для выделенного текста выбранный шрифт

richTextBox1.SelectionFont = fontDialog1.Font;

// установить для выделенного текста выбранный цвет шрифта

richTextBox1.SelectionColor = fontDialog1.Color;

}

}

}

// установить для выделенного текста выбранный цвет

private void цветToolStripMenuItem_Click(object sender, EventArgs e)

{

colorDialog1.Color = richTextBox1.SelectionColor;

if (colorDialog1.ShowDialog( ) == DialogResult.OK)

{

richTextBox1.SelectionColor = colorDialog1.Color;

}

}

ЗАДАНИЕ

Разработайте приложение Простой текстовый редактор, описанное выше, и внесите в него следующие изменения:

− добавьте панель инструментов, на которой поместите кнопки, дублирующие все пункты меню;

− в главное меню приложения добавьте пункт для вывода окна О программе, содержащего сведения о разработчике;

− добавьте в приложение контекстное меню, дублирующее команды меню Редактирование;

− команды меню Редактирование и Форматирование следует сделать доступными только в том случае, если в окне текстового редактора отображается содержимое открытого файла или имеется введенный пользователем текст.

Соседние файлы в папке OOP