使用 RichTextBox 控件

RichTextBox 控件可用于输入和编辑文本,它同时提供了比常规的 TextBox 控件更高级的格式特性。

RichTextBox 控件提供了一些属性,通过这些属性,可对该控件中任何部分的文本使用不同的格式。用这些属性,可以将文本变为粗体或斜体,改变文本的颜色,创建上标或下标。可以调整段落的左右缩进值,还可以使用悬挂式缩进。

用途

特性

在设计时设置滚动条

按照缺省规定,RichTextBox 没有滚动条。在运行时,如果在该控件中装入了较大的文件,最终用户就不能看到文件的全部内容了。为使用户能够方便地进行滚动,可将其 ScrollBars 属性设置为 1(水平的)、2(竖直的)或 3(两个都有)。这必须在设计时完成,因为 ScrollBars 属性在运行时是只读的。

用 LoadFile 和 SaveFile 方法打开和保存文件

用 LoadFile 和 SaveFile 方法可以方便地为 RichTextBox 控件打开或保存 RTF 文件。要打开文件,可用 CommonDialog 控件提供路径名,如下所示:

Private Sub OpenFile()
   'RichTextBox 控件的名称是“rtfData”。
   'CommonDialog 名为“dlgOpenFile”。
   '为文件名声明 String 变量。
   '显示 “打开文件”对话框,
   '并将变量设置为文件名。
   Dim strOpen As String   
   dlgOpenFile.ShowOpen  
   strOpen = dlgOpenFile.FileName
   ' LoadFile 方法打开该文件。
   rtfData.LoadFile strOpen
End Sub

用 SaveFile 方法,保存文件也同样简便:

Private Sub SaveFile()
   Dim strNewFile As String  
   dlgOpenFile.ShowSave
   strNewFile = dlgOpenFile.FileName 
   rtfData.SaveFile strNewFile
End Sub

注意 如果文件中包含了该控件不能支持的 RTF 编码,仅相关的文本在 RichTextBox 控件中将不会出现。

用 SelFontName、SelFontSize 和 SelFontColor 设置字体属性

要改变 RichTextBox 控件中的字体特性,可以使用 SelFontName、SelFontSize 和 SelFontColor 属性。

通常使用 ComboBox 控件显示这些属性的选项。随后可用 ComboBox 控件的 Click 事件改变属性。下面的代码首先在 Form 对象的 Load 事件中,充填名为“cmbFonts”的 ComboBox 控件。然后用 Click 事件改变 RichTextBox 控件的 SelFontName 属性。

Private Sub Form_Load()
   Dim i As Integer
   With cmbFonts
      For i = 0 to Screen.Fonts.Count - 1
      .AddItem Screen.Fonts(i).Text
   End With
End Sub

Private Sub cmbFonts_Click()
   rtfData.SelFontName = cmbFonts.Text
End Sub

重点 这些属性只影响选中的文本,或者,如果没有选中文本,则影响当前光标位置之后键入的文本。

格式化段落的缩进、悬挂式缩进和项目符号

RichTextBox 控件的另一个特性是它可以创建有缩进、悬挂式缩进和项目符号的段落。这三种样式显示如下:

缩进和带项目符号的缩进 (rtf_3ind.bmp)

要使用 SelFontName、SelFontSize 和 SelFontColor 属性,最终用户必须选中一个或多个段落。在这里,假设用户只选中了第二段,创建缩进和悬挂式缩进的代码如下所示:

'假设该控件的名称是“rtfData”。
rtfData.SelIndent = .5
rtfdata.SelHangingIndent = 1.5

请注意用于设置 SelIndent、SelHangingIndent、BulletIndent 和其它属性的值,要依赖于 RichTextBox 控件的容器的 ScaleMode 属性。例如,如果 RichTextBox 控件的容器是 Form 对象,则将该 Form 对象的 ScaleMode 属性由 7(厘米)改为 1(缇)时,SelIndent 属性必须同时由 0.5(厘米)改为 283(缇)。这是因为一厘米 = 567 缇。

同时还要注意段落的 SelBullet 属性必须设置为 True,才能将该段设置为有项目符号的样式。

用 SelChange 事件通知属性的变化

要通告用户选中的任何文本的当前属性,可以使用 SelChange 事件。每当插入点改变,或者选中内容被改变时,均会产生该事件。下面的示例用 Toolbar 控件通告用户 SelBold 属性的变化。

Private Sub rtfData_SelChange()
   '重新设置 Toolbar  Button 对象的
   ' Value 属性。该 Toolbar 控件的名称是
   'tlbRTF”。

   'SelBold 返回 0-1  Null。如果它为 Null 
   '则将其 Mi xedState 属性设置为 TrueSelect Case rtfData.SelBold
   Case 0 '不是粗体。
      tlbRTF.Buttons("bold").Value = tbrUnpressed
   Case -1 '粗体。
      tlbRTF.Buttons("bold").Value = tbrPressed
   Case Else '混合状态。
      tlbRTF.Buttons("bold").Mi xedState = True
   End Select
End Sub

用 SelPrint 方法打印 RichTextBox 的内容

要打印 RichTextBox 控件,可以使用 SelPrint 方法。该方法需要一个参数,即用来打印 RichTextBox 控件内容的 Printer 对象的 hDC 属性。如果用户选中了某些文本,则只打印选中的文本。如果没有选中任何文本,则打印该控件的所有内容。

下面的代码,在用户单击 CommandButton 控件后,用 CommonDialog 控件显示“打印机”对话框。Flags 属性禁用了页码,并使用户能够在该对话框中选择多种选项:

Private Sub cmdPrint_Click()
   'CommonDialog 控件的名称是“dlgPrint”。
    
   dlgPrint.Flags = cdlPDReturnDC + cdlPDNoPageNums
   If rtfData.SelLength = 0 Then
      dlgPrint.Flags = dlgPrint.Flags + cdlPDAllPages
   Else
      dlgPrint.Flags = dlgPrint.Flags + cdlPDSelection
   End If
   dlgPrint.ShowPrinter
   rtfData.SelPrint dlgPrint.hDC
End Sub

详细信息 有关使用 CommonDialog 控件的详细说明,请参阅《Visual Basic程序员指南》中的“使用 CommonDialog 控件”。

在控件中显示嵌入对象

在运行时,最终用户可拖动任何嵌入对象,并放入 RichTextBox 控件。在控件中可以嵌入两种对象:以图标形式显示的对象,和以数据形式显示的对象。下图显示了具有嵌入文件对象的 RichTextBox,作为第一种类型的示例。

单击后,嵌入的对象就会象预料的那样,即启动与该文件相关联的应用程序。当控件中的数据以 RTF 文件形式保存时(用 SaveFile 方法),嵌入对象中的信息也将被保存。

然而,如果最终用户在该控件中嵌入位图,则将显示该位图,而不是它的图标,如下所示:

单击该位图将启动 Paint 应用程序,使最终用户能够编辑该位图。

用 OLEObjects 集合的 Add 方法添加嵌入对象

用 OLEObject 集合的 Add 方法可将嵌入对象以编程方式加入该控件,如下所示:

Private Sub cmdAddObject_Click()
   '将蝴蝶位图添加到该控件中。
   RichTextBox1.OLEObjects.Add , , , "bfly.bmp"
End Sub

在运行时,可用 Add、Clear 和 Remove 方法,动态地向该控件中充填嵌入对象。