I have the following code which applies font styles to the selected text in a RichTextBox:
(Not mine i might addCode: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 count As Integer For count = 0 To selLength - 1 ' select 1 char rtb.Select(selStart + count, 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 Try rtb.SelectionFont = New Font(currFont.FontFamily, currFont.Size, _ currStyle) Catch ex As Exception End Try Next ' reselect the original selection rtb.Select(selStart, selLength) Else rtb.SelectionFont = New Font(rtb.SelectionFont, _ rtb.SelectionFont.Style Or style) End If End Sub)
This takes into account styles already applied, (so you can have, for example, bold and italic)
The trouble is that it doesn't remove the style, I have a bold button and want it so that it's a toggle (bold on, bold off...), I have the button part worked out
But the text just stay's bold! Does anyone have any ideas? NOTE: I have already set textbold to false.Code:Private Sub butBold_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butBold.Click If textbold = False Then AddFontStyle(rtbSectionText, FontStyle.Bold) textbold = True Else AddFontStyle(rtbSectionText, FontStyle.Regular) textbold = False End If rtbSectionText.Focus() MessageBox.Show("Textbold = " & textbold) End Sub




)
Reply With Quote