Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB7
Expertise: Intermediate
Jun 1, 2002



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Adding styles to the font of the selected text of a RichTextBox

' Add a style to the selection of a RichTextBox,
' without deleting the current styles that may be already
' present in the selection or in portions of it
' Example: AddFontStyle(richTextBox1, FontStyle.Bold)

Public Sub AddFontStyle(ByVal rtb As RichTextBox, _
    ByVal style As System.Drawing.FontStyle)
    ' if the selection length is > 0, work char by char.
    ' This is necessary because the selected text may have different
    ' styles in different substrings, and we want to preserve all
    ' the original styles of any char, and just add the specified one
    If rtb.SelectionLength > 0 Then
        Dim selStart As Integer = rtb.SelectionStart
        Dim selLength As Integer = rtb.SelectionLength
        Dim currFont As System.Drawing.Font
        Dim currStyle As System.Drawing.FontStyle

        Dim i As Integer
        For i = 0 To selLength - 1
            ' select 1 char
            rtb.Select(selStart + i, 1)
            ' get the font of the selected char
            currFont = rtb.SelectionFont
            ' get the current style of this char, and add the 
            ' specified style
            currStyle = currFont.Style
            currStyle = currStyle Or style
            ' create and assign to the char a new font 
            ' with the new style this may throw an exception, 
            ' is the current font family does not support
            ' the specified style, so handle this possible situation
                rtb.SelectionFont = New Font(currFont.FontFamily, currFont.Size, _
            Catch ex As Exception
            End Try
        ' reselect the original selection
        rtb.Select(selStart, selLength)
        rtb.SelectionFont = New Font(rtb.SelectionFont, _
            rtb.SelectionFont.Style Or style)
    End If
End Sub
Marco Bellinaso
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date