文本编辑器能进行的最后一个格式化操作是设定文本的大小。为文本框Size添加两个事件处理程序,一个处理程序控制输入,另一个处理程序测试用户输入完一个值的时间。
在Properties窗口的Events列表中找到并双击textBoxSize 控件的KeyPress和Validated事件,给处理程序添加代码。
与上面例子使用的Validating不同,Validated事件在进行完验证后引起。这两个事件处理程序都使用一个帮助方式ApplyTextSize,该方式带有一个字符串参数,表示文本的大小:
private void textBoxSize_KeyPress(object sender, KeyPressEventArgs e)
{
// Remove all characters that are not numbers, backspace and enter.
if ((e.KeyChar < 48 || e.KeyChar > 57) &&
e.KeyChar != 8 && e.KeyChar != 13)
{
e.Handled = true;
}
else if (e.KeyChar == 13)
{
// Apply size if the user hits enter
TextBox txt = (TextBox)sender;
if (txt.Text.Length > 0)
ApplyTextSize(txt.Text);
e.Handled = true;
this.richTextBoxText.Focus();
}
}
private void textBoxSize_Validated(object sender, CancelEventArgs e)
{
TextBox txt = (TextBox)sender;
ApplyTextSize(txt.Text);
this.richTextBoxText.Focus();
}
private void ApplyTextSize(string textSize)
{
// Convert the text to a float because we'll be needing a float shortly
float newSize = Convert.ToSingle(textSize);
FontFamily currentFontFamily;

Font newFont;
// Create a new font of the same family but with the new size
currentFontFamily = this.richTextBoxText.SelectionFont.FontFamily;
newFont = new Font(currentFontFamily, newSize);
// Set the font of the selected text to the new font
this.richTextBoxText.SelectionFont = newFont;
}
KeyPress事件只允许用户输入一个整数,并在用户按下回车键时,调用ApplyTextSize。我们感兴趣的是帮助方式ApplyTextSize。它首先把文本的大小从字符串转换为异或数,我们只允许用户输入整数,但在创建新字体时,需要使用浮点数,所以把它转化为恰当的数据类别。
之后,获取字体所属的字体系列,从该系列中建立一个带有新字号的新字体。最后,把选中文本的图标设置为新字体。
这就是我们所能进行的所有格式化操作,有一些操作可以由RichTextBox本身处理。如果今天尝试运行这个例子,就可以把文本修改为粗体、斜体和破折号,还可以居中文本。这就是我们希望的操作,但也有一些非常有趣的操作。试着在文本中输入一个网址,例如 ,该文本就被控件识别为一个Internet地址,加上下划线,当把光标指针移至该文本的上边时,鼠标指针经常做成手的颜色。单击该文本,就会开启一个网页。我们必须处理客户单击链接时引起的事件:LinkClicked。
在Properties窗口的Events列表中找到LinkClicked事件,双击它,给事件处理程序中添加代码。我们曾经没有见过这个事件处理程序。它用于提供单击链接的文本,处理程序比较简洁,如下所示:
private void richTextBoxText_LinkedClick(object sender,
System.Windows.Forms.LinkClickedEventArgs e)
{
System.Diagnostics.Process.Start(e.LinkText);
}
这段代码打开了默认的浏览器(如果浏览器没有打开),并导航至该链接指向的站点。
应用程序的编辑部分就完成了。剩下的是读取跟储存控件的内容。这里使用一个固定的文件。双击Load按钮,添加以下的代码:
private void buttonLoad_Click(object sender, EventArgs e)
{
// Load the file into the RichTextBox
try
{
richTextBoxText.LoadFile("Test.rtf");
}
catch (System.IO.FileNotFoundException)
{
MessageBox.Show("No file to load yet");
}
}
这就完成了,不需要做其它工作。因为我们处理的是文件,所以总是有也许遇到异常,必须处理这种异常。在Load方法中,处理了因文件不存在而抛出的异常。保存文件只是这种,双击Save按钮,添加以下的代码:
private void buttonSave_Click(object sender, EventArgs e)
{
// Save the text
try
{
richTextBoxText.SaveFile("Test.rtf");
}
catch (System.Exception err)
{
MessageBox.Show(err.Message);
}
}
现在运行实例,格式化一些文本,再点击Save按钮。清空文本框,单击Load按钮,刚才保存的文本经常重新显示出来。
这是一个RichTextBox示例。运行它时,应得到如图15-15所示的结果。

图 15-15
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-140347-2.html
一样的价格