Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по C#.doc
Скачиваний:
259
Добавлен:
08.11.2018
Размер:
5.81 Mб
Скачать

Элемент управления Windows Forms RichTextBox позволяет записывать отображаемые в нем данные в одном из следующих форматов:

  • Обычный текст

  • Текст в Юникоде

  • Формат RTF (Rich Text Format)

  • Формат RTF с пропусками на месте объектов OLE

  • Обычный текст с текстовым представлением объектов OLE

Чтобы сохранить файл:

  1. Определите путь к файлу, в который будет производиться запись.

На практике для этого обычно используется компонент SaveFileDialog.

  1. Вызовите метод SaveFile элемента управления RichTextBox, указав имя файла для сохранения и, если необходимо, его тип. Если метод вызван только с одним аргументом — именем файла, то файл будет сохранен в формате RTF. Чтобы определить другой тип файла, вызовите метод, использовав в качестве второго аргумента одно из значений перечисления RichTextBoxStreamType.

В примере, представленном ниже, подразумевается, что элемент управления RichTextBox уже добавлен в форму.

private void label3_Click(object sender, EventArgs e)

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

{ richTextBox1.SaveFile(saveFileDialog1.FileName,

RichTextBoxStreamType.RichNoOleObjs);

}

}

Примечание. Открытие файла осуществляется аналогично.

Пример.

private void label1_Click(object sender, EventArgs e)

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

{ richTextBox1.LoadFile(openFileDialog1.FileName,

RichTextBoxStreamType.RichText);

}

}

Отслеживание изменения атрибутов форматирования текста в элементе управления RichTextBox

Как правило, элемент управления Windows Forms RichTextBox используется для форматирования текста с применением таких атрибутов, как параметры шрифта или стиль абзаца. В приложениях часто требуется отслеживать изменения формата текста, чтобы учитывать их при отображении панели инструментов, как это делается во многих текстовых редакторах.

Чтобы реагировать на изменения атрибутов форматирования, выполните следующие действия:

Добавьте в обработчик событий SelectionChanged код, выполняющий определенные действия в зависимости от значения атрибута. В приведенном ниже примере вид кнопки панели инструментов изменяется в зависимости от значения свойства SelectionFont. Если текст написан в окне RichTextBox курсивом, то кнопка toolStripButton1 будет нажата, иначе отжата. Кнопка панели инструментов изменится только после перемещения курсора внутри элемента управления.

В этом примере предполагается наличие формы с элементом управления RichTextBox и элементом управления ToolStrip, содержащим кнопку.

private void richTextBox1_SelectionChanged(object sender, EventArgs e)

{ if (richTextBox1.SelectionFont.Style == FontStyle.Italic)

{ toolStripButton1.Checked = true;

}

else

{ toolStripButton1.Checked = false;

}

}

Создание событий форматирования текста

Большинство современных текстовых редакторов содержат команды меню и элементы панели инструментов, предназначенные для форматирования текста.

Чтобы создать событие форматирования текста выполните следующие действия:

  1. На форме расположите элемент управления, при выборе которого должно срабатывать изменение внешнего вида текста документа. Это могут быть пункт меню, кнопка панели инструментов, обычная кнопка, ссылка и другие элементы управления.

  2. Создайте обработчик события выбора созданного элемента управления.

  3. В теле созданного обработчика события пропишите код, аналогичный следующему:

private void richTextBox1_SelectionChanged(object sender, EventArgs e)

{ if (richTextBox1.SelectionFont.Style == FontStyle.Italic)

{ toolStripButton1.Checked = true;

}

else

{ toolStripButton1.Checked = false;

}

}

private void toolStripButton2_Click(object sender, EventArgs e)

{ //Cчитываем текущие параметры

FontFamily fm = richTextBox1.SelectionFont.FontFamily;

GraphicsUnit fp = richTextBox1.SelectionFont.Unit;

float fs = richTextBox1.SelectionFont.Size;

//Если курсив, то убираем

if (toolStripButton2.Checked)

richTextBox1.SelectionFont = new Font(fm, fs, FontStyle.Regular, fp);

//Если нет курсива, то добавляем

else

richTextBox1.SelectionFont = new Font(fm, fs, FontStyle.Italic, fp);

}

Отображение полос прокрутки в элементе управления RichTextBox

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

Чтобы отобразить полосы прокрутки в элементе управления RichTextBox

  1. Установите для свойства Multiline значение true. Если свойство Multiline имеет значение false, то полосы прокрутки, включая горизонтальную, отображаться не будут.

  2. Присвойте свойству ScrollBars соответствующее значение перечисления RichTextBoxScrollBars.

  3. Присвойте соответствующее значение свойству WordWrap.