详解C# RichTextBox的使用方法

开发 后端
本文介绍了RichTextBox.Find方法,以及C# RichTextBox控件的使用方法。

RichTextBox.Find方法

RichTextBox控件不仅允许输入和编辑文本,同时还提供了标准TextBox 控件未具有的、更高级的指定格式的许多功能。

语法:RichTextBox

说明:

C# RichTextBox提供了一些属性,对于本控件文本的任何部分,用这些属性都可以指定格式。为了改变文本的格式,首先要选定它。只有选定的文本才能赋予字符和段落格式。使用这些属性,可把文本改为粗体或斜体,或改变其颜色,以及创建上标和下标。通过设置左右缩进和悬挂式缩进,可调整段落的格式。

C# RichTextBox控件能以 rtf 格式和普通 ASCII 文本格式这两种形式打开和保存文件。可以使用控件的方法(LoadFile 和 SaveFile)直接读写文件,或使用与 Visual Basic 文件输入/输出语句联结的、诸如 SelRTF 和 TextRTF 之类的控件属性打开和保存文件。

通过使用OLEObjects 集合,RichTextBox 控件支持对象的嵌入。插入到控件中的每个对象,都代表 OLEObject 对象。用这样的控件,就可以创建包含其它文档或对象的文档。例如,可创建这样的文档,它有一个嵌入的 Microsoft Excel 电子数据表格、或 Microsoft Word 文档、或其它已在系统中注册的 OLE 对象。为了把一个对象插入到 RichTextBox 控件中,只需简单地拖动一个文件(例如在Windows 95“资源管理器”中的拖动),或拖动的是另一应用程序(如 Microsoft Word)所用文件的一个突出显示的区域,然后将所拖内容直接放入控件。

RichTextBox 控件支持 OLE 对象的剪贴板和 OLE 拖/放操作。从剪贴板中粘贴进一个对象时,它被插在当前插入点处。一个对象被拖放到控件时,插入点将跟踪着鼠标光标的移动,直至鼠标按钮释放时该对象即被插入。这种行为和 Microsoft Word 的一样。

使用 SelPrint 方法,可以打印 RichTextBox 控件的全部或部分文本。

因为 RichTextBox 是一个数据绑定控件,通过 Data 控件可以把它绑定到 Microsoft Access 数据库的 Binary 或 Memo 字段上,也可把它绑定到具有相同容量的其它数据库字段上(例如 SQL 服务器中的 TEXT 数据类型的字段)。

标准 TextBox 控件用到的所有属性、事件和方法,RichTextBox 控件几乎都能支持,例如 MaxLength、 MultiLine、 ScrollBars、 SelLength、 SelStart 和 SelText。对于那些可以使用 TextBox 控件的应用程序,也可以很容易地使用 RichTextBox 控件。而且,RichTextBox 控件并没有和标准 TextBox 控件一样具有 64K 字符容量的限制。

发行注意 为了能在应用程序中使用 RichTextBox 控件,必须把Richtx32.ocx 文件添加到工程中。因此,在应用程序发行时,Richtx32.ocx 文件就应安装在 Microsoft Windows 的 SYSTEM 目录内。

例子:          

  1.   private void 打开图形文件ToolStripMenuItem_Click(object sender, EventArgs e)  
  2.          {  
  3.              string NameFile;  
  4.              if (this.openFileDialog1.ShowDialog() == DialogResult.OK)  
  5.              {  
  6.                  NameFile = this.openFileDialog1.FileName;  
  7.                  if (NameFile != "")  
  8.                  {  
  9.                      this.pictureBox1.Image = Image.FromFile(NameFile);  
  10.                  }  
  11.              }  
  12.          }  
  13.        private void 打开文本文件ToolStripMenuItem_Click(object sender, EventArgs e)  
  14.          {  
  15.              string Filename;  
  16.              pictureBox1.Visible = false;  
  17.              if (this.openFileDialog1.ShowDialog() == DialogResult.OK)  
  18.              {  
  19.                  Filename = openFileDialog1.FileName;  
  20.                  if (Filename != "")  
  21.                  {  
  22.                      this.textBox1.Text = Filename;  
  23.                      this.richTextBox1.LoadFile(@Filename, RichTextBoxStreamType.PlainText);  
  24.                  }  
  25.              }  
  26.          }  
  27.  
  28.  
  29.  
  30.  
  31.  
  32. //构造函数  
  33.                this.textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);  
  34.                this.textBox1.Validating += new CancelEventHandler(textBox1_Validating);  
  35.                this.richTextBox1.LinkClicked += new LinkClickedEventHandler(richTextBox1_LinkClicked);  
  36.          //取消或置为粗体  
  37.          private void button2_Click(object sender, System.EventArgs e)  
  38.          {  
  39.                Font oldFont = this.richTextBox1.SelectionFont;  
  40.                Font newFont;  
  41.                if (oldFont.Bold)  
  42.                    newFont = new Font(oldFont,oldFont.Style & ~FontStyle.Bold);  
  43.                else 
  44.                    newFont = new Font(oldFont,oldFont.Style | FontStyle.Bold);  
  45.                this.richTextBox1.SelectionFont = newFont;  
  46.                this.richTextBox1.Focus();  
  47.          }  
  48.          //取消或置为斜体  
  49.          private void button7_Click(object sender, System.EventArgs e)  
  50.          {  
  51.                Font oldFont = this.richTextBox1.SelectionFont;  
  52.                Font newFont;  
  53.                if (oldFont.Italic)  
  54.                    newFont = new Font(oldFont,oldFont.Style & ~FontStyle.Italic);  
  55.                else 
  56.                    newFont = new Font(oldFont,oldFont.Style | FontStyle.Italic);  
  57.                this.richTextBox1.SelectionFont = newFont;  
  58.                this.richTextBox1.Focus();  
  59.          }  
  60.          //取消或加上下划线  
  61.          private void button8_Click(object sender, System.EventArgs e)  
  62.          {  
  63.                Font oldFont = this.richTextBox1.SelectionFont;  
  64.                Font newFont;  
  65.                if (oldFont.Underline)  
  66.                    newFont = new Font(oldFont,oldFont.Style & ~FontStyle.Underline);  
  67.                else 
  68.                    newFont = new Font(oldFont,oldFont.Style | FontStyle.Underline);  
  69.                this.richTextBox1.SelectionFont = newFont;  
  70.                this.richTextBox1  
  71.                    .Focus();  
  72.          }  
  73.          //取消或置为居中  
  74.          private void button5_Click(object sender, System.EventArgs e)  
  75.          {  
  76.                if (this.richTextBox1.SelectionAlignment == HorizontalAlignment.Center)  
  77.                    this.richTextBox1.SelectionAlignment = HorizontalAlignment.Left;  
  78.                else 
  79.                    this.richTextBox1.SelectionAlignment = HorizontalAlignment.Center;  
  80.                this.richTextBox1.Focus();  
  81.          }  
  82.          private void textBox1_KeyPress(object sender, KeyPressEventArgs e)  
  83.          {  
  84.                if((e.KeyChar <  48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar !=13)   
  85.                {  
  86.                    e.Handled = true;  
  87.                }  
  88.                else if(e.KeyChar == 13)   
  89.                {  
  90.                    TextBox txt = (TextBox)sender;  
  91.                    if(txt.Text.Length > 0)   
  92.                        ApplyTextSize(txt.Text);  
  93.                    e.Handled = true;  
  94.                    this.richTextBox1.Focus();  
  95.                }  
  96.          }  
  97.          private void textBox1_Validating(object sender, CancelEventArgs e)  
  98.          {  
  99.                TextBox txt = (TextBox)sender;  
  100.                ApplyTextSize(txt.Text);  
  101.                this.richTextBox1.Focus();  
  102.            }  
  103.          //改变字体大小  
  104.          private void ApplyTextSize(string textSize)  
  105.          {  
  106.                float newSize = Convert.ToSingle(textSize);  
  107.                FontFamily currentFontFamily;  
  108.                Font newFont;  
  109.                currentFontFamily = this.richTextBox1.SelectionFont.FontFamily;  
  110.                newFont = new Font(currentFontFamily, newSize);  
  111.                this.richTextBox1.SelectionFont = newFont;  
  112.          }  
  113.          //打开网页  
  114.          private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)  
  115.          {  
  116.                System.Diagnostics.Process.Start(e.LinkText);  
  117.          }  
  118.          //打开文件  
  119.          private void button1_Click(object sender, System.EventArgs e)  
  120.          {  
  121.                try 
  122.                {  
  123.                    this.richTextBox1.LoadFile(@"..\..\test.txt");  
  124.                }  
  125.                catch(System.IO.FileNotFoundException)  
  126.                {  
  127.                    MessageBox.Show("File not found!");  
  128.                }  
  129.          }  
  130.          //保存文件  
  131.          private void button6_Click(object sender, System.EventArgs e)  
  132.          {  
  133.                try 
  134.                {  
  135.                    this.richTextBox1.SaveFile(@"..\..\test.txt");  
  136.                }  
  137.                catch(System.Exception err)  
  138.                {  
  139.                    MessageBox.Show(err.Message);  
  140.                }  
  141.          } 

在C# RichTextBox的内容内搜索文本:

重载列表

在 RichTextBox 控件的文本中搜索字符列表中某个字符的***个实例

[C#] public int Find(char[]);

示例

[Visual Basic, C#, C++] 下面的示例在 RichTextBox 的内容中搜索在 text 参数中传递到方法的字符。如果在 RichTextBox 中找到了 text 数组的内容,则该方法返回所找到值的索引;否则,它将返回 -1。该示例假定此方法位于 Form 的类中,该窗体包含一个名为 richTextBox1 的 RichTextBox 控件和一个连接到该示例中定义的单击事件处理方法的 Button 控件(名为 button1)。

[C#]

  1. private void button1_Click(object sender, System.EventArgs e)     
  2. {     
  3.      MessageBox.Show(FindMyText(new char[]{'D','e','l','t','a'}).ToString());     
  4. }     
  5. public int FindMyText(char[] text)     
  6. {     
  7.      // Initialize the return value to false by default.     
  8.      int returnValue = -1;     
  9.      // Ensure that a search string has been specified and a valid start point.     
  10.      if (text.Length > 0)      
  11.      {     
  12.          // Obtain the location of the first character found in the control     
  13.          // that matches any of the characters in the char array.     
  14.          int indexToText = richTextBox1.Find(text);     
  15.          // Determine whether the text was found in richTextBox1.     
  16.          if(indexToText >= 0)     
  17.          {     
  18.              // Return the location of the character.     
  19.              returnValue = indexToText;     
  20.          }     
  21.      }     
  22.      return returnValue;     
  23. }   

在C# RichTextBox控件的文本中搜索字符串。

[C#] public int Find(string);

从特定的起始点开始,在 RichTextBox 控件的文本中搜索字符列表中某个字符的***个实例。

[C#] public int Find(char[], int);

在对搜索应用特定选项的情况下,在 RichTextBox 控件的文本中搜索字符串。

[C#] public int Find(string, RichTextBoxFinds);

示例

[Visual Basic, C#] 下面的示例在 RichTextBox 的整个内容中搜索传递到此方法文本参数中的搜索字符串的***个实例。如果在 RichTextBox 中找到搜索字符串,此方法将返回 true 值并突出显示文本;否则返回 false。本示例还在搜索中指定匹配指定搜索字符串的大小写的选项。此示例假定此方法放置在 Form 的类中,并且该类包含一个名为 richTextBox1 的 RichTextBox。

[C#]

  1. public bool FindMyText(string text)     
  2. {     
  3.    // Initialize the return value to false by default.     
  4.    bool returnValue = false;     
  5.    // Ensure a search string has been specified.     
  6.    if (text.Length > 0)      
  7.    {     
  8.        // Obtain the location of the search string in richTextBox1.     
  9.        int indexToText = richTextBox1.Find(text, RichTextBoxFinds.MatchCase);     
  10.        // Determine if the text was found in richTextBox1.     
  11.        if(indexToText >= 0)     
  12.        {     
  13.          returnValue = true;     
  14.        }     
  15.    }     
  16.    return returnValue;     
  17. }   

在C# RichTextBox控件的某个文本范围中搜索字符列表的某个字符的***个实例。

[C#] public int Find(char[], int, int);

在对搜索应用特定选项的情况下,在 RichTextBox 控件的文本中搜索位于控件内特定位置的字符串。

[C#] public int Find(string, int, RichTextBoxFinds);

在对搜索应用特定选项的情况下,在 RichTextBox 控件文本中搜索控件内某个文本范围内的字符串。

【编辑推荐】

  1. 总结C#哈希表的用法
  2. 不一样的入门:看C# Hello World的17种写法
  3. 什么是WMI?及其示例
  4. 从C#到C++容易出现的问题解答
  5. 浅议.NET、ASP.NET和C#的关系
责任编辑:book05 来源: csdn
相关推荐

2009-09-08 14:54:40

C# listBox控

2009-08-28 17:01:43

C#构造函数

2009-08-28 16:31:21

C# treeview

2009-09-01 15:25:04

C# default关

2010-01-25 14:10:21

C++堆栈

2009-12-02 16:04:44

PHP fsockop

2011-06-01 16:08:29

log4Net

2011-06-01 15:54:41

log4net

2009-12-28 13:28:03

WPF视频

2009-11-30 17:43:54

PHP split()

2011-08-10 17:16:01

Objective-C静态变量

2010-01-28 17:07:03

Android Gal

2010-10-09 10:30:03

JS event

2009-09-02 13:15:23

C#数组复制

2010-06-03 17:38:03

Hadoop命令

2010-06-01 19:55:30

SVN使用

2009-08-20 13:47:57

C#验证输入方法

2009-09-09 10:32:12

C# CheckBox

2011-08-10 11:08:32

Objective-C字符串NSString

2010-01-26 17:35:09

C++栈
点赞
收藏

51CTO技术栈公众号