RichTextBox Control
A RichTextBox control is an advanced text box that provides text editing and advanced formatting features including loading rich text format (RTF) files.
In this article, I will demonstrates how to create and use various features of the Windows Forms RichTextBox control.
A RichTextBox control is an advanced text box that provides text editing and advanced formatting features including loading rich text format (RTF) files.
In this article, I will demonstrates how to create and use various features of the Windows Forms RichTextBox control.
Creating
a RichTextBox
We
can create a RichTextBox control using a Forms designer at design-time or using
the RichTextBox class in code at run-time.
To
create a RichTextBox control at design-time, you simply drag and drop a
RichTextBox control from the Toolbox onto a Form in Visual Studio. Once a
RichTextBox is added to a Form, you can move it around and resize it using the
mouse and set it's properties and events.
Creating a RichTextBox control at
run-time is merely a work of creating an instance of RichTextBox class, setting
it's properties and adding the RichTextBox object to the Form's Controls
collection.
The first step to create a dynamic
RichTextBox is to create an instance of the RichTextBox class. The following
code snippet creates a RichTextBox control object.
// Create a RichTextBox
object
RichTextBox
dynamicRichTextBox = new RichTextBox();
In the next step, you may set
properties of a RichTextBox control. The following code snippet sets size,
location, background color, foreground color, Text, Name, and Font properties
of a RichTextBox.
dynamicRichTextBox.Location = new Point(20, 20);
dynamicRichTextBox.Width = 300;
dynamicRichTextBox.Height = 200;
// Set background and
foreground
dynamicRichTextBox.BackColor = Color.Red;
dynamicRichTextBox.ForeColor = Color.Blue;
dynamicRichTextBox.Text = "I am Dynamic RichTextBox";
dynamicRichTextBox.Name = "DynamicRichTextBox";
dynamicRichTextBox.Font = new Font("Georgia", 16);
Once a RichTextBox control is ready
with its properties, the next step is to add the RichTextBox control to the
Form. To do so, we use Form.Controls.Add method. The following code snippet
adds a RichTextBox control to the current Form.
Controls.Add(dynamicRichTextBox);
A RichTextBox control looks like
Figure 1.
Figure 1
Setting
RichTextBox Properties
After you place a RichTextBox control
on a Form, the next step is to set properties.
The easiest way to set properties is
from the Properties Window. You can open Properties window by pressing F4 or
right click on a control and select Properties menu item. The Properties window
looks like Figure 2.
Figure 2
Location,
Height, Width, and Size
The Location property takes a Point
that specifies the starting position of the RichTextBox on a Form. The Size
property specifies the size of the control. We can also use Width and Height
property instead of Size property. The following code snippet sets Location,
Width, and Height properties of a RichTextBox control.
dynamicRichTextBox.Location = new Point(20, 20);
dynamicRichTextBox.Width = 300;
dynamicRichTextBox.Height = 200;
Background,
Foreground, BorderStyle
BackColor and ForeColor properties are
used to set the background and foreground color of a RichTextBox respectively.
If you click on these properties in Properties window, the Color Dialog pops
up.
Alternatively, you can set background
and foreground colors at run-time. The following code snippet sets BackColor
and ForeColor properties.
// Set background and
foreground
dynamicRichTextBox.BackColor = Color.Red;
dynamicRichTextBox.ForeColor = Color.Blue;
You can also set the borders style of a
RichTextBox by using the BorderStyle property. The BorderStyle property is
represented by a BorderStyle enumeration that has three values – FixedSingle,
Fixed3D, and None. The default value of border style is Fixed3D. The
following code snippet sets the border style of a RichTextBox to FixedSingle.
dynamicRichTextBox.BorderStyle = BorderStyle.FixedSingle;
Name
The Name property represents a
unique name of a RichTextBox control. It is used to access the control in the
code. The following code snippet sets and gets the name and text of a
RichTextBox control.
dynamicRichTextBox.Name = "DynamicRichTextBox";
Text and
TextLength
The Text property of a RichTextBox
represents the current text of a RichTextBox control. The TextLength property
returns the length of a RichTextBox contents.
The following code snippet sets the
Text and TextAlign properties and gets the size of a RichTextBox control.
dynamicRichTextBox.Text = "I am Dynamic RichTextBox";
int
size = dynamicRichTextBox.TextLength;
Append
Text
One way to append text to a RichTextBox is simply set Text
property to current text plus new text you would want to append something like
this.
RichTextBox1.Text += " Appended text";
RichTextBox also has the ApendText method to do the same. The AppendText
method appends text at the end of a RichTextBox. The following code snippet
uses AppendText method to append text to the RichTextBox1 contents.
RichTextBox1.AppendText(" Appended text");
AcceptsTab
If a RichTextBox control is set to multiline, the AcceptsTab
property is used to set the RichTextBox control to accept the TAB key
as text. If this property is not set, pressing the TAB key simply moves to the
next control on the Form. By default, the AcceptsTab property value of a
RichTextBox control is false.
// accepts TAB key
dynamicRichTextBox.AcceptsTab = true;
WordWrap
If WordWrap property is
true, the text in the RichTextBox control automatically wraps to the next line
if required. If this property is set to true, horizontal scroll bars are not
displayed regardless of the ScrollBars property setting.
// Wordwrap
dynamicRichTextBox.WordWrap = true;
ScrollBars
A Multiline RichTextBox control can have scrollbars. The
ScrollBars property of RichTextBox control is used to show scrollbars on a
control. The ScrollBars property is represented by a RichTextBoxScrollBars
enumeration that has four values – Both, Vertical, Horizontal, and None.
The following code snippet makes both vertical and horizontal
scrollbars active on a RichTextBox control and they will be visible when the
scrolling is needed on a RichTextBox control.
dynamicRichTextBox.ScrollBars = RichTextBoxScrollBars.Both;
Font
Font property represents the font of
text of a RichTextBox control. If you click on the Font property in the
Properties window, you will see Font name, size and other font options. The
following code snippet sets Font property at run-time.
dynamicRichTextBox.Font = new Font("Georgia", 16);
Maximum
Length
You can restrict the number of characters in a RichTextBox control
by setting MaxLength property. The following code snippet sets the maximum
length of a RichTextBox to 50 characters.
dynamicRichTextBox.ReadOnly = true;
dynamicRichTextBox.MaxLength = 50;
ReadOnly
You can make a RichTextBox control read-only (non-editable) by
setting the ReadOnly property to true. The following code snippet sets the
ReadOnly property to true.
dynamicRichTextBox.ReadOnly = true;
Enabling
and Disabling Shortcuts
ShortcutsEnabled property of the RichTextBox is used to enable or
disable shortcuts. By default, shortcuts are enabled. The following code
snippet disables shortcuts in a RichTextBox.
dynamicRichTextBox.ShortcutsEnabled
= false;
ShortcutsEnabled
property applies to the following shortcut key combinations:
- CTRL+Z
- CTRL+E
- CTRL+C
- CTRL+Y
- CTRL+X
- CTRL+BACKSPACE
- CTRL+V
- CTRL+DELETE
- CTRL+A
- SHIFT+DELETE
- CTRL+L
- SHIFT+INSERT
- CTRL+R
Read
RichTextBox Contents
The simplest way of reading a RichTextBox control contents is
using the Text property. Note however that the Text property has no formatting;
it has only text. See the Rtf property for the text including the formatting.
The following code snippet reads contents of a RichTextBox in a string.
string
RichTextBoxContents = dynamicRichTextBox.Text;
In a multiline RichTextBox, if the RichTextBox contents are
separated by multiple lines and you want to read contents of a RichTextBox line
by line, you can use the Lines property of the RichTextBox. The Lines property
returns an array of strings where each element of the returned array is a line.
The following code snippet reads a RichTextBox contents line by
line.
string
[] RichTextBoxLines = dynamicRichTextBox.Lines;
foreach
(string line in
RichTextBoxLines)
{
MessageBox.Show(line);
}
Selection
in RichTextBox
The SelectedText property returns the selected text in a
RichTextBox control.
string
selectedText = dynamicRichTextBox.SelectedText;
You may also use SelectionStart and SelectionLength properties to
get and set the selected text in a RichTextBox. The SelectionStart property
represents the starting index of the selected text and SelectionLength property
represents the number of characters to be selected after the starting
character. The following code snippet sets the selection on a RichTextBox.
dynamicRichTextBox.SelectionStart =
10;
dynamicRichTextBox.SelectionLength =
20;
Clear,
SelectAll and DeselectAll
The Clear method removes the contents of a RichTextBox. The
following code snippet uses Clear method to clear the contents of a
RichTextBox.
RichTextBox1.Clear();
RichTextBox class provides SelectAll and DeselectAll methods to
select and deselect all text of a RichTextBox control. The following code
snippet shows how to use SelectAll and DeselectAll methods.
private
void selectAllToolStripMenuItem_Click(object sender, EventArgs
e)
{
if (RichTextBox1.TextLength > 0)
RichTextBox1.SelectAll();
}
private
void deselectAllToolStripMenuItem_Click(object sender, EventArgs
e)
{
if (RichTextBox1.TextLength > 0)
RichTextBox1.DeselectAll();
}
Cut,
Copy, Paste, Undo Operations in RichTextBox
RichTextBox class provides Cut, Copy, Paste, and Undo methods to
cut, copy, paste, and undo clipboard operations. The following code snippet
shows how to use Cut, Copy, Paste, and Undo methods.
private
void cutToolStripMenuItem_Click(object sender, EventArgs
e)
{
if (RichTextBox1.SelectionLength > 0)
RichTextBox1.Cut();
}
private
void copyToolStripMenuItem_Click(object sender, EventArgs
e)
{
if (RichTextBox1.SelectionLength > 0)
RichTextBox1.Copy();
}
private
void pasteToolStripMenuItem_Click(object sender, EventArgs
e)
{
if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text))
{
RichTextBox1.Paste();
}
}
private
void undoToolStripMenuItem_Click(object sender, EventArgs
e)
{
if (RichTextBox1.CanUndo)
{
RichTextBox1.Undo();
RichTextBox1.ClearUndo();
}
}
Load and
Save RTF Files
LoadFile method of RichTextBox control is used to load an RTF file
and displays its contents. SaveFile method is used to save the contents of a
RichTextBox to an RTF file. The following code snippet loads an RTF file using
an OpenFileDialog and saves back its contents.
private
void LoadRTFButton_Click(object sender, EventArgs
e)
{
OpenFileDialog ofd = new
OpenFileDialog();
ofd.InitialDirectory = "c:\\";
ofd.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
ofd.FilterIndex =
2;
ofd.RestoreDirectory = true;
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
dynamicRichTextBox.LoadFile(ofd.FileName);
dynamicRichTextBox.Find("Text", RichTextBoxFinds.MatchCase);
dynamicRichTextBox.SelectionFont = new Font("Verdana",
12, FontStyle.Bold);
dynamicRichTextBox.SelectionColor = Color.Red;
dynamicRichTextBox.SaveFile(@"C:\Junk\SavedRTF.rtf",
RichTextBoxStreamType.RichText);
}
}
BulletIndent
BulletIndent property gets or sets the indentation used in the RichTextBox control when
the bullet style is applied to the text.
dynamicRichTextBox.BulletIndent =
10;
Selection
Properties
Here
is a list of properties that are applicable on current selected text.
- <!--[if !supportLists]-->SelectionAlignment – Alignment of selected text.
- <!--[if !supportLists]--> <!--[endif]-->SelectionBackColor – Background color of selected
text.
- <!--[if !supportLists]--> <!--[endif]-->SelectionBullet – True or false to set if bullets are
applied on selected text.
- <!--[if !supportLists]--> <!--[endif]-->SelectionCharOffset - Whether text in the control appears on the baseline, as a
superscript, or as a subscript below the baseline
- <!--[if !supportLists]--> <!--[endif]-->SelectionColor – Color of selected text.
- <!--[if !supportLists]-->SelectionFont – Font of selected text.
- <!--[if !supportLists]--><!--[endif]-->SelectionHangingIndent - Distance between the left edge of the first line of text in
the selected paragraph and the left edge of subsequent lines in the same
paragraph.
- <!--[if !supportLists]-->SelectionIndent - Length, in pixels, of the indentation of the line where the
selection starts.
- <!--[if !supportLists]--><!--[endif]-->SelectionProtected - Calue indicating whether the current text selection is
protected
- <!--[if !supportLists]-->SelectionTabs - Absolute tab stop positions.
- <!--[if !supportLists]-->SelectionType – Selection type represented by
RichTextBoxSelectionType enumeration with values Empty, Text, Object,
MultiChar, and MultiObject.
The following code snippet sets these selection properties.
private
void SelectionButton_Click(object sender, EventArgs
e)
{
dynamicRichTextBox.BackColor = Color.White;
dynamicRichTextBox.Clear();
dynamicRichTextBox.BulletIndent = 10;
dynamicRichTextBox.SelectionFont = new Font("Georgia",
16, FontStyle.Bold);
dynamicRichTextBox.SelectedText = "Mindcracker
Network \n";
dynamicRichTextBox.SelectionFont = new Font("Verdana",
12);
dynamicRichTextBox.SelectionBullet = true;
dynamicRichTextBox.SelectionColor = Color.DarkBlue;
dynamicRichTextBox.SelectedText
= "C# Corner" + "\n";
dynamicRichTextBox.SelectionFont = new Font("Verdana",
12);
dynamicRichTextBox.SelectionColor = Color.Orange;
dynamicRichTextBox.SelectedText = "VB.NET
Heaven" + "\n";
dynamicRichTextBox.SelectionFont = new Font("Verdana",
12);
dynamicRichTextBox.SelectionColor = Color.Green;
dynamicRichTextBox.SelectedText = ".Longhorn
Corner" + "\n";
dynamicRichTextBox.SelectionColor = Color.Red;
dynamicRichTextBox.SelectedText = ".NET
Heaven" + "\n";
dynamicRichTextBox.SelectionBullet = false;
dynamicRichTextBox.SelectionFont = new Font("Tahoma",
10);
dynamicRichTextBox.SelectionColor = Color.Black;
dynamicRichTextBox.SelectedText = "This is a
list of Mindcracker Network websites.\n";
}
The output text in a RichTextBox looks like Figure .
Redo and
CanRedo
Redo method can be used to reapply the last undo operation to the control.
CanRedo property represents whether there are actions that have occurred within the RichTextBox
that can be reapplied.
if
(dynamicRichTextBox.CanRedo == true)
{
if (dynamicRichTextBox.RedoActionName != "Delete")
dynamicRichTextBox.Redo();
}
DetectUrls
If set true, the DetectUrls property will automatically format a Uniform Resource Locator
(URL) when it is typed into the control.
EnableAutoDragDrop
RichTextBox control supports drag and drop operations that allow
us to drag and drop text, picture, and other data. EnableAutoDragDrop property enables drag-and-drop operations on text,
pictures, and other data.
dynamicRichTextBox.EnableAutoDragDrop
= true;
RightMargin,
AutoWordSelection, and ZoomFactor
RightMargin property represents the size of a single line of text within a RichTextBox control.
AutoWordSelection
property represents if a word is automatically selected when a text is double
clicked within a RichTextBox control.
ZoomFactor
represents the current zoom level of the RichTextBox. Value 1.0 means there is
no zoom applied on a control.
private
void ZoomButton_Click(object
sender, EventArgs e)
{
dynamicRichTextBox.AutoWordSelection = true;
dynamicRichTextBox.RightMargin = 5;
dynamicRichTextBox.ZoomFactor = 3.0f;
}
Rtf and
SelectedRtf
Rtf property is used to
get and set rich text format (RTF) text in a RichTextBox control. SelectedRtf
property is used to get and set selected text in a control. RTF text is the
text that includes formatting.
Summary
A RichTextBox control accepts user input on a Form and provides rich text features. In this article, we discussed discuss how to create a RichTextBox control in Windows Forms at design-time as well as run-time. After that, we saw how to use various properties and methods.
A RichTextBox control accepts user input on a Form and provides rich text features. In this article, we discussed discuss how to create a RichTextBox control in Windows Forms at design-time as well as run-time. After that, we saw how to use various properties and methods.
No comments:
Post a Comment