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

用这些 ComboBox 控件,用户可以选择用于选中文本的字体、字体颜色和字体大小。
在本说明中使用了如下对象:
注意 下面的步骤简要地勾画出了本说明的创建过程。每一步在后面的部分都将进行更详细的介绍。
要创建显示属性的三个组合框,请按照以下步骤执行:
Form 对象的 ScaleMode 属性确定特定属性的度量单位。在 RichTextBox 控件中,SelIndent、SelHangingIndent 以及其它属性,都使用 ScaleMode 决定的单位。对这些属性来说,用厘米作单位比用缇作单位更方便。另外,在创建 PlaceHolder 样式的 Button 对象时,ScaleMode 属性还决定了 Button 对象宽度的单位。
要将窗体对象的 ScaleMode 属性设置为厘米,请按照以下步骤执行:
在“工具箱”中,双击 Toolbar 控件图标。在“属性”窗口中,双击“名称”,并将该控件的名称改为“tlbRTF”。
在“工具箱”中需要放置三个 ComboBox 控件。每个 ComboBox 控件中都将被充填入一些字体的属性。
要创建三个 ComboBox 控件,请按照以下步骤执行:
| ComboBox | 属性 | 值 |
| ComboBox1 | Name | cmbFontName |
| ComboBox2 | Name | cmbFontSize |
| ComboBox3 | Name | cmbFontColor |
还必须向这些 ComboBox 控件充填适当的值。下面的代码在 Form_Load 事件中分别充填每个 ComboBox 控件。
Private Sub Form_Load() '向cmbFontColor中添加颜色。With cmbFontColor.AddItem "Black".AddItem "Blue".AddItem "Red".AddItem "Green".ListIndex = 0End WithDim i As IntegerWith cmbFontNameFor i = 0 to Screen.FontCount - 1.AddItem Screen.Fonts(i)Next i'将ListIndex设置为0。.ListIndex = 0End WithWith cmbFontSize'向组合框中充填字体大小。'单位增量为2。For i = 8 To 72 Step 2.AddItem iNext i'将ListIndex设置为0.ListIndex = 1 '大小为10。End WithEnd Sub
要设置 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.ShowWith rtfDataSelect Case cmbFontColor.ListIndexCase 0.SelColor = vbBlackCase 1.SelColor = vbBlueCase 2.SelColor = vbRedCase 3.SelColor = vbGreenEnd SelectEnd With'将焦点还回RichTextbox控件。rtfData.SetFocusEnd Sub
当插入点在 RichTextBox 控件中移动时,ComboBox 控件还可用来向用户报告文本的属性。当移动插入点,或者改变选中的文本时,都会产生 SelChange 事件。这样,就可以在 SelChange 事件中,检查 SelFontName、SelFontColor 和 SelFontSize 属性,并重新设置相应的 ComboBox 控件。
Private Sub rtfData_SelChange() 'SelFontSize返回字体的大小。'如果字体大小不一致,则返回Null。If Not IsNull(rtfData.SelFontSize) ThencmbFontSize.Text = rtfData.SelFontSizeEnd If'在ComboBox中显示字体名称。cmbFont.Text = rtfData.SelFontName'在ComboBox中显示文本的颜色。'用颜色的内部常数确定文本的颜色。Select Case rtfData.SelColorCase vbBlackcmbFontColor.ListIndex = 0Case vbBluecmbFontColor.ListIndex = 1Case vbRedcmbFontColor.ListIndex = 2Case vbGreencmbFontColor.ListIndex = 3End SelectEnd Sub