C#中richtextbox使用方法详解

C#中RichTextBox使用方法和TextBox基本一样,只不过RichText除了TXT外,还支持RTF格式的文档。本文详细介绍RichTextBox的使用方法供大家参考,具体如下:

一、RichTextBox的使用方法

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

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

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 目录内。

二、RichTextBox实例代码:

private void 打开图形文件ToolStripMenuItem_Click(object sender, EventArgs e)
 {
   string NameFile;
   if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
   {
 NameFile = this.openFileDialog1.FileName;
 if (NameFile != "")
 {
   this.pictureBox1.Image = Image.FromFile(NameFile);
 }
   }
 }
private void 打开文本文件ToolStripMenuItem_Click(object sender, EventArgs e)
 {
   string Filename;
   pictureBox1.Visible = false;
   if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
   {
 Filename = openFileDialog1.FileName;
 if (Filename != "")
 {
   this.textBox1.Text = Filename;
   this.richTextBox1.LoadFile(@Filename, RichTextBoxStreamType.PlainText);
 }
   }
 }

//构造函数
    this.textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);
    this.textBox1.Validating += new CancelEventHandler(textBox1_Validating);
    this.richTextBox1.LinkClicked += new LinkClickedEventHandler(richTextBox1_LinkClicked);
 //取消或置为粗体
 private void button2_Click(object sender, System.EventArgs e)
 {
    Font oldFont = this.richTextBox1.SelectionFont;
    Font newFont;
    if (oldFont.Bold)
  newFont = new Font(oldFont,oldFont.Style & ~FontStyle.Bold);
    else
  newFont = new Font(oldFont,oldFont.Style | FontStyle.Bold);
    this.richTextBox1.SelectionFont = newFont;
    this.richTextBox1.Focus();
 }
 //取消或置为斜体
 private void button7_Click(object sender, System.EventArgs e)
 {
    Font oldFont = this.richTextBox1.SelectionFont;
    Font newFont;
    if (oldFont.Italic)
  newFont = new Font(oldFont,oldFont.Style & ~FontStyle.Italic);
    else
  newFont = new Font(oldFont,oldFont.Style | FontStyle.Italic);
    this.richTextBox1.SelectionFont = newFont;
    this.richTextBox1.Focus();
 }
 //取消或加上下划线
 private void button8_Click(object sender, System.EventArgs e)
 {
    Font oldFont = this.richTextBox1.SelectionFont;
    Font newFont;
    if (oldFont.Underline)
  newFont = new Font(oldFont,oldFont.Style & ~FontStyle.Underline);
    else
  newFont = new Font(oldFont,oldFont.Style | FontStyle.Underline);
    this.richTextBox1.SelectionFont = newFont;
    this.richTextBox1
  .Focus();
 }
 //取消或置为居中
 private void button5_Click(object sender, System.EventArgs e)
 {
    if (this.richTextBox1.SelectionAlignment == HorizontalAlignment.Center)
  this.richTextBox1.SelectionAlignment = HorizontalAlignment.Left;
    else
  this.richTextBox1.SelectionAlignment = HorizontalAlignment.Center;
    this.richTextBox1.Focus();
 }
 private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
 {
    if((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar !=13)
    {
  e.Handled = true;
    }
    else if(e.KeyChar == 13)
    {
  TextBox txt = (TextBox)sender;
  if(txt.Text.Length > 0)
    ApplyTextSize(txt.Text);
  e.Handled = true;
  this.richTextBox1.Focus();
    }
 }
 private void textBox1_Validating(object sender, CancelEventArgs e)
 {
    TextBox txt = (TextBox)sender;
    ApplyTextSize(txt.Text);
    this.richTextBox1.Focus();
  }
 //改变字体大小
 private void ApplyTextSize(string textSize)
 {
    float newSize = Convert.ToSingle(textSize);
    FontFamily currentFontFamily;
    Font newFont;
    currentFontFamily = this.richTextBox1.SelectionFont.FontFamily;
    newFont = new Font(currentFontFamily, newSize);
    this.richTextBox1.SelectionFont = newFont;
 }
 //打开网页
 private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
 {
    System.Diagnostics.Process.Start(e.LinkText);
 }
 //打开文件
 private void button1_Click(object sender, System.EventArgs e)
 {
    try
    {
  this.richTextBox1.LoadFile(@"..\..\test.txt");
    }
    catch(System.IO.FileNotFoundException)
    {
  MessageBox.Show("File not found!");
    }
 }
 //保存文件
 private void button6_Click(object sender, System.EventArgs e)
 {
    try
    {
  this.richTextBox1.SaveFile(@"..\..\test.txt");
    }
    catch(System.Exception err)
    {
  MessageBox.Show(err.Message);
    }
 }

三、在 RichTextBox 的内容内搜索文本:

1.重载列表:

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

public int Find(char[]);

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

如下代码:

private void button1_Click(object sender, System.EventArgs e)
{
   MessageBox.Show(FindMyText(new char[]{'D','e','l','t','a'}).ToString());
}
public int FindMyText(char[] text)
{
   // Initialize the return value to false by default.
   int returnValue = -1;
   // Ensure that a search string has been specified and a valid start point.
   if (text.Length > 0)
   {
     // Obtain the location of the first character found in the control
     // that matches any of the characters in the char array.
     int indexToText = richTextBox1.Find(text);
     // Determine whether the text was found in richTextBox1.
     if(indexToText >= 0)
     {
       // Return the location of the character.
       returnValue = indexToText;
     }
   }
   return returnValue;
}

2.在 RichTextBox 控件的文本中搜索字符串。

public int Find(string);

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

 public int Find(char[], int);

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

 public int Find(string, RichTextBoxFinds);

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

具体代码如下:

public bool FindMyText(string text)
{
  // Initialize the return value to false by default.
  bool returnValue = false;
  // Ensure a search string has been specified.
  if (text.Length > 0)
  {
    // Obtain the location of the search string in richTextBox1.
    int indexToText = richTextBox1.Find(text, RichTextBoxFinds.MatchCase);
    // Determine if the text was found in richTextBox1.
    if(indexToText >= 0)
    {
     returnValue = true;
    }
  }
  return returnValue;
}

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

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

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

 public int Find(string, int, RichTextBoxFinds);

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

(0)

相关推荐

  • C#实现两个richtextbox控件滚动条同步滚动的简单方法

    前言 有时候我们需要实现对照文章等,往往将文本放到两个richtextbox控件中,但是,如果我们需要同步滚动查看,来达到更好的观看效果. 当然,传统的方法重载控件或者自定义控件都可以达到目的,但是对于新手或者想仅仅只用一次这个控件的人来说,是非常麻烦的.所以,接下来我来提供一种简单快捷的方法来实现:richtextbox滚动条同步的功能. 方法如下: 首先,我们在winform窗体创建两个richtextbox控件 下面介绍两个方法,我经常用到 第一个方法,获得当前鼠标所在richtextbo

  • C#在RichTextBox中显示不同颜色文字的方法

    本文实例讲述了C#在RichTextBox中显示不同颜色文字的方法.分享给大家供大家参考.具体实现方法如下: #region 日志记录.支持其他线程访问 public delegate void LogAppendDelegate(Color color, string text); /// <summary> /// 追加显示文本 /// </summary> /// <param name="color">文本颜色</param> /

  • C# RichTextBox制作文本编辑器

    本文利用一个简单的小例子[文本编辑器],讲解RichTextBox的用法. Windows窗体中的RichTextBox控件用于显示,输入和操作格式化的文本,RichTextBox除了拥有TextBox控件的所有功能外,还可以显示字体,颜色,链接,从文件中读取和加载图像,以及查找指定的字符.RichTextBox控件通常用于提供类似字体处理程序(如Microsoft Word)的文本操作和显示功能.RichTextBox控件可以显示滚动条,且默认根据需要进行显示. 涉及知识点: Selectio

  • C#中richtextbox使用方法详解

    C#中RichTextBox使用方法和TextBox基本一样,只不过RichText除了TXT外,还支持RTF格式的文档.本文详细介绍RichTextBox的使用方法供大家参考,具体如下: 一.RichTextBox的使用方法 RichTextBox.Find方法 RichTextBox控件不仅允许输入和编辑文本,同时还提供了标准 TextBox 控件未具有的.更高级的指定格式的许多功能. 语法:RichTextBox 说明: RichTextBox 提供了一些属性,对于本控件文本的任何部分,用

  • Angular中的$watch方法详解

    在$apply方法中提到过脏检查,首先apply方法会触发evel方法,当evel方法解析成功后,会去触发digest方法,digest方法会触发watch方法. (1)$watch简介 在digest执行时,如果watch观察的的value与上一次执行时不一样时,就会被触发. AngularJS内部的watch实现了页面随model的及时更新. $watch方法在用的时候主要是手动的监听一个对象,但对象发生变化时触发某个事件. (2)watch方法用法 $watch(watchFn,watch

  • angularjs中的$eval方法详解

    在controller中定义了一个变量 $scope.a_1 = "abc"; 想在view里面动态输出,因为这个数字是动态的,这么输出肯定是不行的{{'a_' + '1'}},因为输出来的是a_1这个字符串,而不是a_1这个变量的值 想输出a_1这个变量的值,可以使用$eval方法:{{$eval('a_' + '1')}} $eval是作为scope的方法来使用的,在controller中使用的话,是这么使用:$scope.$eval() 以上这篇angularjs中的$eval方

  • Python中格式化format()方法详解

     Python中格式化format()方法详解 Python中格式化输出字符串使用format()函数, 字符串即类, 可以使用方法; Python是完全面向对象的语言, 任何东西都是对象; 字符串的参数使用{NUM}进行表示,0, 表示第一个参数,1, 表示第二个参数, 以后顺次递加; 使用":", 指定代表元素需要的操作, 如":.3"小数点三位, ":8"占8个字符空间等; 还可以添加特定的字母, 如: 'b' - 二进制. 将数字以2为基

  • Android中SQLite 使用方法详解

    Android中SQLite 使用方法详解 现在的主流移动设备像android.iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧.对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取. 下面就向大家介绍一下SQLite常用的操作方法,为了方便,我将代码写在了Activity的onCreate中: @Ov

  • Android 中 onSaveInstanceState()使用方法详解

    Android 中 onSaveInstanceState()使用方法详解 覆盖onSaveInstanceState方法,并在onCreate中检测savedInstanceState和获取保存的值 @Override protected void onSaveInstanceState(Bundle outState) { outState.putInt("currentposition", videoView.getCurrentPosition()); super.onSave

  • 关于redux-saga中take使用方法详解

    本文介绍了关于redux-saga中take使用方法详解,分享给大家,具体如下: 带来一个自己研究好久的API使用方法. redux-saga中effect中take这个API使用方式,用的多的是call,put,select,但take这个平常还真没什么机会用上,也不清楚在哪里使用才好,不管怎么样,既然是redux-saga写出来的,肯定是有他的用法的,不管37 21,先学会使用方法再说. 先看看介绍: take take的表现同takeEvery一样,都是监听某个action,但与takeE

  • Hybris在idea中debug配置方法详解

    1.启动hybris服务的命令用 hybrisserver.bat debug 2.在idea中配置remote debug 端口号默认不变选择所要监听的服务(如下图) 点击小爬虫启动debug服务访问接口时,即可用debug调试程序了! 总结 到此这篇关于Hybris在idea中debug配置方法详解的文章就介绍到这了,更多相关Hybris在idea中debug配置内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • java9在interface中定义私有方法详解

    一.Java 9接口定义私有方法 从Java 9开始,我们可以在Interface接口中添加private的私有方法和私有静态方法.这些私有方法将改善接口内部的代码可重用性.例如,如果需要两个默认方法来共享代码,则私有接口方法将允许它们共享代码,但不将该私有方法暴露给它的实现类调用(后文中会给大家举一个例子). 在接口中使用私有方法有四个规则: 接口中private方法不能是abstract抽象方法.因为abstract抽象方法是公开的用于给接口实现类实现的方法,所以不能是private. 接口

  • Python3.9.1中使用match方法详解

    接触编程的朋友都听过正则表达式,在python中叫re模块,属于文字处理服务里面的一个模块.re里面有一个方法叫match,接下来的文章我来详细讲解一下match. 作为新手,我建议多使用帮助文档,也就是help(re),来获取对re的说明.也可以尝试打开模块对应的py文件,细致地了解实现方法. 当然那是后话,饭得一口一口吃. 本文的主角是match,match的作用主要是从字符串起始位置匹配一个模式,如果成功则返回一个对象,失败则为None. 而match的语法是这样:match(patter

随机推荐