ComponentOne RichTextBox for WPF
Working with WPF RichTextBox / Custom Command Bars / Formatting Functions
In This Topic
    Formatting Functions
    In This Topic

    The following code snippets demonstrate the code used for formatting functions in RichTextBox .NET 4.5.2 and .NET 5 versions.

    You can also use Ctrl+a shortcut to select the entire text, Ctrl+b shortcut to bold the text, Ctrl+i shortcut to italicize the text, and Ctrl+u shortcut to underline the text.  

    Foreground Color

    C#
    Copy Code
    rtb.Selection.Foreground = newSolidColorBrush(Colors.Red);
    Highlight (background) color
    rtb.Selection.InlineBackground = newSolidColorBrush(Colors.Yellow);
    Toggle Bold
    if(rtb.Selection.FontWeight != null&& rtb.Selection.FontWeight.Value.Weight == FontWeights.Bold.Weight)
    {
        rtb.Selection.FontWeight = FontWeights.Normal;
    }
    else
    {
        rtb.Selection.FontWeight = FontWeights.Bold;
    }
    

    Toggle Italic

    C#
    Copy Code
    if(rtb.Selection.FontStyle != null&& rtb.Selection.FontStyle == FontStyle.Italic)
    {
        rtb.Selection.FontStyle = FontStyle.Normal;
    }
    else
    {
        rtb.Selection.FontStyle = FontStyle.Italic;
    }
    

    Toggle Underline

    C#
    Copy Code
    var range = rtb.Selection;
    var collection = new C1TextDecorationCollection();
    if (range.TextDecorations == null)
    {
        collection.Add(C1TextDecorations.Underline[0]);
    }
    else if (!range.TextDecorations.Contains(C1TextDecorations.Underline[0]))
    {
        foreach (var decoration in range.TextDecorations)
            collection.Add(decoration);
    
        collection.Add(C1TextDecorations.Underline[0]);
    }
    else
    {
        foreach (var decoration in range.TextDecorations)
            collection.Add(decoration);
    
        collection.Remove(C1TextDecorations.Underline[0]);
        if (collection.Count == 0)
            collection = null;
    }
    range.TextDecorations = collection;
    

    Clear Formatting

    C#
    Copy Code
    rtb.Selection.InlineBackground = null;
    rtb.Selection.Foreground = rtb.Foreground;
    rtb.Selection.FontWeight = FontWeights.Normal;
    rtb.Selection.FontStyle = FontStyle.Normal;
    rtb.Selection.TextDecorations = null;
    

    You can also use Ctrl+a shortcut to select the entire text, Ctrl+b shortcut to bold the text, Ctrl+i shortcut to italicize the text, and Ctrl+u shortcut to underline the text.

     

    The following code implements Selection, Bold, Italics, and Underline formatting functions.

    C#
    Copy Code
    private void RichTextBoxSelectionChanged(object sender, EventArgs e)
    { 
        var sel = _rtb.Selection;
    
        FontWeight? fw = _rtb.Selection.FontWeight;
        _btnBold.IsChecked = fw.HasValue && fw.Value == FontWeights.Bold;
    
        FontStyle? fs = _rtb.Selection.FontStyle;
        _btnItalic.IsChecked = fs.HasValue && fs.Value == FontStyles.Italic;
    
        _btnUnderline.IsChecked = (sel.TextDecorations != null);
    }
    
    private void UnderlineClick(object sender, RoutedEventArgs e)
    {
        if (_btnUnderline.IsChecked.HasValue)
        {
            _rtb.Selection.TextDecorations = _btnUnderline.IsChecked.Value
            ? C1.WPF.RichTextBox.Documents.C1TextDecorations.Underline
           : null;
        }
    }
    
    private void ItalicClick(object sender, RoutedEventArgs e)
    {
        FontStyle? fs = _rtb.Selection.FontStyle;
        _rtb.Selection.FontStyle = fs.HasValue && fs.Value == FontStyles.Italic
            ? FontStyles.Normal
            : FontStyles.Italic;
    }
    
    private void BoldClick(object sender, RoutedEventArgs e)
    {
        FontWeight? fw = _rtb.Selection.FontWeight;
        _rtb.Selection.FontWeight = fw.HasValue && fw.Value == FontWeights.Bold
            ? FontWeights.Normal
            : FontWeights.Bold;