[size=2][color=#0000ff]
Public [/color][/size][size=2][color=#0000ff]Sub[/color][/size][size=2] AddFontStyle([/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] rtb [/size][size=2][color=#0000ff]As[/color][/size][size=2] IMRichTextBox.IMRichTextBox, [/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] style [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.Drawing.FontStyle)
[/size][size=2][color=#008000]' if the selection length is > 0, work char by char.
[/color][/size][size=2][color=#008000]' This is necessary because the selected text may have different
[/color][/size][size=2][color=#008000]' styles in different substrings, and we want to preserve all
[/color][/size][size=2][color=#008000]' the original styles of any char, and just add the specified one
[/color][/size][size=2][color=#0000ff]If[/color][/size][size=2] rtb.SelectionLength > 0 [/size][size=2][color=#0000ff]Then
[/color][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] selStart [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]Integer[/color][/size][size=2] = rtb.SelectionStart
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] selLength [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]Integer[/color][/size][size=2] = rtb.SelectionLength
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] currFont [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.Drawing.Font
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] currStyle [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.Drawing.FontStyle
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] i [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]Integer
[/color][/size][size=2][color=#0000ff]For[/color][/size][size=2] i = 0 [/size][size=2][color=#0000ff]To[/color][/size][size=2] selLength - 1
[/size][size=2][color=#008000]' select 1 char
[/color][/size][size=2]rtb.Select(selStart + i, 1)
[/size][size=2][color=#008000]' get the font of the selected char
[/color][/size][size=2]currFont = rtb.SelectionFont
[/size][size=2][color=#008000]' get the current style of this char, and add the
[/color][/size][size=2][color=#008000]' specified style
[/color][/size][size=2]currStyle = currFont.Style
currStyle = currStyle [/size][size=2][color=#0000ff]Or[/color][/size][size=2] style
[/size][size=2][color=#008000]' create and assign to the char a new font
[/color][/size][size=2][color=#008000]' with the new style this may throw an exception,
[/color][/size][size=2][color=#008000]' is the current font family does not support
[/color][/size][size=2][color=#008000]' the specified style, so handle this possible situation
[/color][/size][size=2][color=#0000ff]Try
[/color][/size][size=2]rtb.SelectionFont = [/size][size=2][color=#0000ff]New[/color][/size][size=2] Font(currFont.FontFamily, currFont.Size, _
currStyle)
[/size][size=2][color=#0000ff]Catch[/color][/size][size=2] ex [/size][size=2][color=#0000ff]As[/color][/size][size=2] Exception
[/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff]Try
[/color][/size][size=2][color=#0000ff]Next
[/color][/size][size=2][color=#008000]' reselect the original selection
[/color][/size][size=2]rtb.Select(selStart, selLength)
[/size][size=2][color=#0000ff]Else
[/color][/size][size=2]rtb.SelectionFont = [/size][size=2][color=#0000ff]New[/color][/size][size=2] Font(rtb.SelectionFont, _
rtb.SelectionFont.Style [/size][size=2][color=#0000ff]Or[/color][/size][size=2] style)
[/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff]If
[/color][/size][size=2][color=#0000ff]End [/color][/size][size=2][color=#0000ff]Sub
[/color][/size][size=2][color=#0000ff]Public [/color][/size][size=2][color=#0000ff]Sub[/color][/size][size=2] RemoveFontStyle([/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] rtb [/size][size=2][color=#0000ff]As[/color][/size][size=2] IMRichTextBox.IMRichTextBox, [/size][size=2][color=#0000ff]ByVal[/color][/size][size=2] style [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.Drawing.FontStyle)
[/size][size=2][color=#008000]' if the selection length is > 0, work char by char.
[/color][/size][size=2][color=#008000]' This is necessary because the selected text may have different
[/color][/size][size=2][color=#008000]' styles in different substrings, and we want to preserve all
[/color][/size][size=2][color=#008000]' the original styles of any char, except for removing
[/color][/size][size=2][color=#008000]' the specified one
[/color][/size][size=2][color=#0000ff]If[/color][/size][size=2] rtb.SelectionLength > 0 [/size][size=2][color=#0000ff]Then
[/color][/size][size=2][color=#0000ff]Dim[/color][/size][size=2] selStart [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]Integer[/color][/size][size=2] = rtb.SelectionStart
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] selLength [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]Integer[/color][/size][size=2] = rtb.SelectionLength
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] currFont [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.Drawing.Font
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] currStyle [/size][size=2][color=#0000ff]As[/color][/size][size=2] System.Drawing.FontStyle
[/size][size=2][color=#0000ff]Dim[/color][/size][size=2] i [/size][size=2][color=#0000ff]As[/color][/size][size=2][color=#0000ff]Integer
[/color][/size][size=2][color=#0000ff]For[/color][/size][size=2] i = 0 [/size][size=2][color=#0000ff]To[/color][/size][size=2] selLength - 1
[/size][size=2][color=#008000]' select 1 char
[/color][/size][size=2]rtb.Select(selStart + i, 1)
[/size][size=2][color=#008000]' get the font of the selected char
[/color][/size][size=2]currFont = rtb.SelectionFont
[/size][size=2][color=#008000]' get the current style of this char, and
[/color][/size][size=2][color=#008000]' remove the specified style
[/color][/size][size=2]currStyle = currFont.Style
currStyle = currStyle [/size][size=2][color=#0000ff]And[/color][/size][size=2][color=#0000ff]Not[/color][/size][size=2] style
[/size][size=2][color=#008000]' create and assign to the char a new font
[/color][/size][size=2][color=#008000]' with the new style
[/color][/size][size=2]rtb.SelectionFont = [/size][size=2][color=#0000ff]New[/color][/size][size=2] Font(currFont.FontFamily, currFont.Size, _
currStyle)
[/size][size=2][color=#0000ff]Next
[/color][/size][size=2][color=#008000]' reselect the original selection
[/color][/size][size=2]rtb.Select(selStart, selLength)
[/size][size=2][color=#0000ff]Else
[/color][/size][size=2]rtb.SelectionFont = [/size][size=2][color=#0000ff]New[/color][/size][size=2] Font(rtb.SelectionFont, _
rtb.SelectionFont.Style [/size][size=2][color=#0000ff]And[/color][/size][size=2][color=#0000ff]Not[/color][/size][size=2] style)
[/size][size=2][color=#0000ff]End[/color][/size][size=2][color=#0000ff]If
[/color][/size][size=2][color=#0000ff]End [/color][/size][size=2][color=#0000ff]Sub
[/color][/size]