RichTextBox 的说明:改变 Fonts、FontSize 和 FontColor

用 RichTextBox 控件,最终用户可以改变文本的多种属性,比如字体、字体的大小和字体颜色。在本说明中,在应用程序的工具栏中有三个 ComboBox 控件,它们被用来显示 RichTextBox 控件中的文本的属性:

用这些 ComboBox 控件,用户可以选择用于选中文本的字体、字体颜色和字体大小。

在本说明中使用了如下对象:

注意 下面的步骤简要地勾画出了本说明的创建过程。每一步在后面的部分都将进行更详细的介绍。

要创建显示属性的三个组合框,请按照以下步骤执行:

  1. 将 Form 对象的 ScaleMode 设置为厘米。

  2. 创建 Toolbar 控件。

  3. 在 Toolbar 控件中创建三个 ComboBox 控件。

  4. 在 Form 对象的 Load 事件中:充填 ComboBox 控件。

  5. 在 ComboBox 控件的 Click 事件中:设置 SelFontName、SelFontColor 或 SelFontSize 属性。

  6. 在 RichTextBox 控件的 SelChange 事件中:用 SelFontName、SelFontColor 或 SelFontSize 属性改变适当的 ComboBox 控件的 List 属性。

将 Form 对象的 ScaleMode 设置为厘米

Form 对象的 ScaleMode 属性确定特定属性的度量单位。在 RichTextBox 控件中,SelIndent、SelHangingIndent 以及其它属性,都使用 ScaleMode 决定的单位。对这些属性来说,用厘米作单位比用缇作单位更方便。另外,在创建 PlaceHolder 样式的 Button 对象时,ScaleMode 属性还决定了 Button 对象宽度的单位。

要将窗体对象的 ScaleMode 属性设置为厘米,请按照以下步骤执行:

  1. 单击 Form 对象。

  2. 按 F4 键以显示出“属性”窗口。

  3. 单击 ScaleMode 属性,并选中 7(厘米)。

创建 Toolbar 控件

在“工具箱”中,双击 Toolbar 控件图标。在“属性”窗口中,双击“名称”,并将该控件的名称改为“tlbRTF”。

创建三个 ComboBox 控件

在“工具箱”中需要放置三个 ComboBox 控件。每个 ComboBox 控件中都将被充填入一些字体的属性。

要创建三个 ComboBox 控件,请按照以下步骤执行:

  1. 在“工具箱”中,单击 ComboBox 控件图标。

  2. 在 Toolbar 控件中放入 ComboBox 控件。

  3. 按照下表,分别设置三个 ComboBox 控件的 Name 属性:
ComboBox 属性
ComboBox1 Name cmbFontName
ComboBox2 Name cmbFontSize
ComboBox3 Name cmbFontColor

充填 ComboBox 控件

还必须向这些 ComboBox 控件充填适当的值。下面的代码在 Form_Load 事件中分别充填每个 ComboBox 控件。

Private Sub Form_Load()
   ' cmbFontColor 中添加颜色。
   With cmbFontColor
   .AddItem "Black"
   .AddItem "Blue"
   .AddItem "Red"
   .AddItem "Green"
   .ListIndex = 0
   End With
   
   Dim i As Integer
   With cmbFontName
      For i = 0 to Screen.FontCount - 1
         .AddItem Screen.Fonts(i)
      Next i
      ' ListIndex 设置为 0.ListIndex = 0
   End With

   With cmbFontSize
      '向组合框中充填字体大小。
      '单位增量为 2For i = 8 To 72 Step 2
         .AddItem i
      Next i
      ' ListIndex 设置为 0
      .ListIndex = 1 '大小为 10End With
End Sub

在 ComboBox 控件的 Click 事件中:设置 SelFontName、SelColor 或 SelFontSize 属性

要设置 RichTextBox 控件中使用的字体、字体颜色和字体大小,可以使用 SelFontName、SelColor 和 SelFontSize 属性。在每个 ComboBox 控件的 Click 事件中,分别设置适当的属性。为其属性赋值之后,需要将焦点还回 RichTextBox 控件:

Private Sub cmbFontName_Click()
   rtfData.SelFontName = cmbFont
   rtfData.SetFocus
End Sub

Private Sub cmbFontSize_Click()
   rtfData.SelFontSize = cmbFontSize.Text
   rtfData.SetFocus
End Sub

Private Sub cmbFontColor_Click()
   ' Select Case 语句处理
   'ComboBox 控件的 ListIndex'将文本的字体颜色做相应改变。
   '用颜色的内部常数设置字体颜色。
   Me.Show
      With rtfData
   Select Case cmbFontColor.ListIndex
   Case 0
      .SelColor = vbBlack
   Case 1
      .SelColor = vbBlue
   Case 2
      .SelColor = vbRed
   Case 3
      .SelColor = vbGreen
   End Select
   End With
   '将焦点还回 RichTextbox 控件。
   rtfData.SetFocus
End Sub

在 SelChange 事件中:用 SelFontName、SelColor 或 SelFontSize 属性改变适当的 ComboBox 控件的 List 属性

当插入点在 RichTextBox 控件中移动时,ComboBox 控件还可用来向用户报告文本的属性。当移动插入点,或者改变选中的文本时,都会产生 SelChange 事件。这样,就可以在 SelChange 事件中,检查 SelFontName、SelFontColor 和 SelFontSize 属性,并重新设置相应的 ComboBox 控件。

Private Sub rtfData_SelChange()
   'SelFontSize 返回字体的大小。
   '如果字体大小不一致,则返回 NullIf Not IsNull(rtfData.SelFontSize) Then
      cmbFontSize.Text = rtfData.SelFontSize
   End If

   ' ComboBox 中显示字体名称。
   cmbFont.Text = rtfData.SelFontName

' ComboBox 中显示文本的颜色。
'用颜色的内部常数确定文本的颜色。
   Select Case rtfData.SelColor
      Case vbBlack
         cmbFontColor.ListIndex = 0
      Case vbBlue
         cmbFontColor.ListIndex = 1
      Case vbRed
         cmbFontColor.ListIndex = 2
      Case vbGreen
         cmbFontColor.ListIndex = 3
   End Select
End Sub