RichTextBox 控件可用于输入和编辑文本,它同时提供了比常规的 TextBox 控件更高级的格式特性。
RichTextBox 控件提供了一些属性,通过这些属性,可对该控件中任何部分的文本使用不同的格式。用这些属性,可以将文本变为粗体或斜体,改变文本的颜色,创建上标或下标。可以调整段落的左右缩进值,还可以使用悬挂式缩进。
按照缺省规定,RichTextBox 没有滚动条。在运行时,如果在该控件中装入了较大的文件,最终用户就不能看到文件的全部内容了。为使用户能够方便地进行滚动,可将其 ScrollBars 属性设置为 1(水平的)、2(竖直的)或 3(两个都有)。这必须在设计时完成,因为 ScrollBars 属性在运行时是只读的。
用 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 控件中将不会出现。
要改变 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 事件。每当插入点改变,或者选中内容被改变时,均会产生该事件。下面的示例用 Toolbar 控件通告用户 SelBold 属性的变化。
Private Sub rtfData_SelChange() '
重新设置Toolbar
的Button
对象的' Value
属性。该Toolbar
控件的名称是'
“tlbRTF
”。'SelBold
返回0
、-1
或Null
。如果它为Null
'
则将其Mi xedState
属性设置为True
。Select 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
要打印 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 应用程序,使最终用户能够编辑该位图。
用 OLEObject 集合的 Add 方法可将嵌入对象以编程方式加入该控件,如下所示:
Private Sub cmdAddObject_Click() '
将蝴蝶位图添加到该控件中。RichTextBox1.OLEObjects.Add , , , "bfly.bmp"
End Sub
在运行时,可用 Add、Clear 和 Remove 方法,动态地向该控件中充填嵌入对象。