Многострочный текстовый редактор RichTextBox

Компонент находится в разделе Common Controls палитры компонентов Toolbox в разделе Common Controls. Для нанесения компонента на форму необходимо щелкнуть левой кнопкой мыши в палитре компонентов на элемент RichTextBox, а затем, переведя курсор мыши на форму, щелкнуть левой кнопкой на форме, после чего можно, потянув за анкерные точки, придать текстовому редактору нужные размеры.

Перечислим основные свойства компонента:

-Name - получает или задает идентификационное имя элемента. Имя позволяет обращаться из кода программной части, например, из кода обработчика событий;

- FontFamily - получает или задает семейство шрифтов элемента управления;

- FontSize - получает или задает размер шрифта;

- FontStyle - получает или задает стиль шрифта;

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

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

- ScrollBars - позволяет ввести полосы прокрутки. Используется при многострочном режиме, когда строки не помещаются в отведенное пространство редактора. Вид полос прокрутки выбирается из выпадающего списка. При этом надо следить за свойством WordWrap (если разрешен перенос текста на следующую строку, то горизонтальная полоса не появится);

- WordWrap - задает возможность автоматического переноса символов в начало следующей строки (без нажатия клавиши Enter);

- Lines – массив строк – содержимое текстового редактора;

- Text – текст, представленный в редакторе.

Из большого количества событий практическое значение имеет событие TextChanded - генерируется при любом изменении содержимого редактора или форматирования (например, изображений, таблиц или фонового цвета).

Основные методы компонента следующие:

- AppendText (String ^s)– добавление текста к текущему тексту;

- Clear – удаляет текущее выделение текста из элемента управления, поддерживающего редактирование текста, и копирует его в буфер обмена;

- Copy – копирует текущее выделение текста в элементе управления, поддерживающем редактирование текста, в буфер обмена;

- Cut – вырезка отмеченного множества строк из поля ввода/вывода и помещение их в буфер памяти;

- Focus – установка фокуса ввода на компонент;

- Hide – установка компонента в невидимое состояние;

- Paste – замена текущего выбранного участка текста содержимым буфера памяти; Вставляет текущее содержимое буфера обмена на место текущего выделения в элементе управления, поддерживающем редактирование текста;

- SelectAll – выделяет все содержимое текстового элемента управления, поддерживающего редактирование текста;

- Show – установка компонента в видимое состояние;

- Undo – отмена последней операции редактирования в поле компонента.

При работе с текстовыми файлами полезными являются два метода редактора LoadFile и SaveFile. Первый метод позволяет загрузить содержимое текстового файла в редактор, а второй – сохранить содержимое редактора в текстовом файле. Заголовки методов следующие

void LoadFile( String^ path, RichTextBoxStreamType fileType);void SaveFile( String^ path, RichTextBoxStreamType fileType);

Первый параметр задает имя файла, а второй параметр – тип загружаемого файла.

Значения второго параметра могут быть следующими:

RichText - поток в формате RTF.

PlainText - поток открытого текста с пробелами вместо объектов OLE.

RichNoOleObjs - поток в формате RTF с пробелами вместо объектов OLE. Это значение действительно только для использования с методом SaveFile элемента управления RichTextBox.

TextTextOleObjs - поток открытого текста с текстовым представлением объектов OLE. Это значение действительно только для использования с методом SaveFile элемента управления RichTextBox.

UnicodePlainText - поток текста с пробелами вместо объектов OLE. Текст в кодировке Юникод.

С помощью метода LoadFile содержимое загружаемого файла замещает все содержимое элемента управления RichTextBox. С помощью этого метода можно загрузить предварительно созданный текст или RTF-документ в элемент управления для дальнейшей с ним работы.

Эта версия метода LoadFile позволяет указать тип загружаемого файла и обеспечивать возможность загружать в элемент управления иные, чем RTF-документы, файлы.

В следующем примере кода текстовый файл открывается в элементе управления RichTextBox. Для вывода на экран диалогового окна с запросом файла от пользователя в примере используется класс OpenFileDialog. Затем код загружает этот файл в элемент управления RichTextBox. В примере эта версия метода LoadFile используется для указания того, что файл должен быть открыт как текстовый файл в кодировке ASCII, а не в стандартном формате RTF. В примере предполагается, что код размещается в классе объекта Form, содержащем элемент управления RichTextBox с именем richTextBox1.



void LoadMyFile(){ OpenFileDialog^ openFile1 = gcnew OpenFileDialog; openFile1->DefaultExt = "*.rtf"; openFile1->Filter = "RTF Files|*.rtf"; if ( openFile1->ShowDialog() == System:: Windows::Forms::DialogResult::OK && openFile1->FileName->Length > 0) { richTextBox1->LoadFile( openFile1->FileName, RichTextBoxStream Type::PlainText ); }}

Метод SaveFile позволяет сохранять все содержимое элемента управления в RTF-файл, который можно будет использовать в других программах, таких как Microsoft Word и Windows WordPad. Если имя файла, переданное параметру path, уже существует в указанной папке, старый файл будет замещен без предупреждения. Метод LoadFile позволяет загрузить содержимое файла в элемент управления RichTextBox.

Эта версия метода SaveFile позволяет также указать тип файла, в который будет сохранено содержимое элемента управления. Эта возможность позволяет обеспечить сохранение файла в правильном формате, в зависимости от содержимого элемента управления. Например, если в документе используется один шрифт или цвет, его можно сохранить в формате текстового файла в кодировке ASCII, присвоив параметру fileType значение RichTextBoxStreamType.PlainText.

В следующем примере осуществляется сохранение содержимого элемента управления RichTextBox в ASCII-файл. В примере для вывода на экран диалогового окна с запросом пути и имени файла у пользователя используется класс SaveFileDialog. Затем код сохраняет содержимое элемента управления в этот файл. В примере эта версия метода SaveFile используется для указания того, что файл должен быть сохранен как текстовый файл в кодировке ASCII, а не в стандартном формате RTF. В примере предполагается, что код размещается в классе Form, содержащем элемент управления RichTextBox с именем richTextBox1.

void SaveMyFile(){ SaveFileDialog^ saveFile1 = gcnew SaveFileDialog; saveFile1->DefaultExt = "*.rtf"; saveFile1->Filter = "RTF Files|*.rtf"; if ( saveFile1->ShowDialog() == Sytem::Windows::Forms::DialogResult::OK && saveFile1->FileName->Length > 0 ) { richTextBox1->SaveFile( saveFile1->FileName , RichTextBoxStreamType::PlainText ); }}

Компонент OpenFileDialog

Компонент находится в списке Dialogs палитры компонентов, предназначен для выбора файлов с помощью стандартного окна Windows для выбора и открытия файлов. Для высвечивания диалогового окна необходимо использовать метод ShowDialog(). Основные свойства компонента:

Multiselect – при установке значения true можно выбирать группу файлов;

ShowReadOnly – для файлов типа”только для чтения” появляется галочка рядом с названием файла;

Filter – задает условие фильтрации файлов (позволяет выбирать только те файлы, которые указаны в фильтре).

Компонент является невизуальным, он размещается не на форме, а помещается на специальную полосу, расположенную в нижней части окна дизайнера формы.

Диалоговое окно для выбора файла появляется при выполнении метода ShowDialog(). Когда пользователь в появившемся окне нажимает на кнопку Открыть (Open), данный метод возвращает значение DialogResult, которое надо сравнить со значением OK. Это означает, что если возвращаемое значение также равно OK, то метод сработал без ошибок, и окно открылось. При нажатии в окне на кнопку Открыть, окно закроется, а имя выбранного файла будет присвоено свойству компонента FileName, после чего его можно использовать в приложении при работе с файлом.

С помощью свойства Filter можно задать фильтр для выборки файлов. Если объявлена переменная OpenFileDialog^ openFile1 = gcnew OpenFileDialog;, то с помощью оператора присваивания openFile1->Filter = "RTF Files|*.rtf"; задается конкретное значение фильтра (в данном случае выведется в окне информация обо всех RTF файлах). Как видно из примера, значение фильтра задается в виде строки, в которой сначала описывается фильтр, затем ставится вертикальная черта, после которой указывается шаблон файлов.

Свойство DefaultExt позволяет установить расширение файла по умолчанию, например, openFile1->DefaultExt = "txt";

Компонент SaveFileDialog

Компонент находится в списке Dialogs палитры компонентов, предназначен для сохранения файла в нужном месте файловой структуры так, как это делается в Windows. Файл сам по себе не сохраняется, компонент дает только путь к месту расположения файла. Программист сам должен написать соответствующий участок кода программы для сохранения файла. Для открытия диалогового окна используется метод ShowDialog(). Компонент является невизуальным, размещается не на форме, а на специальной полосе ниже формы. Основные свойства у этого компонента совпадают со свойствами компонента OpenFileDialog.

Следует отметить свойство OverwritePrompt, которое вызывает появление диалогового окна Save As, для этого свойство должно быть установлено в true.

Когда пользователь выбирает имя файла и нажимает на кнопку Save в диалоговом окне, метод ShowDialog() заносит в свойство FileName имя файла и путь к нему. Никакой записи файла при этом не происходит, поэтому необходимо применять методы сохранения файлов.

Наши рекомендации