【问题标题】:How to make some text bold in a rich text box in C#如何在 C# 的富文本框中使某些文本变为粗体
【发布时间】:2011-10-28 00:18:51
【问题描述】:

我想创建一个文本编辑器,我可以在其中将文本设置为粗体、更改其颜色等。

我发现这段代码几乎可以工作:

public static void BoldSelectedText(RichTextBox control)
{
     control.SelectionFont = new Font(control.Font.FontFamily, control.Font.Size,         FontStyle.Bold);
}

但是当我在RichTextBox 中输入更多字母时,文本仍然是粗体。

除非我选择文本并点击“加粗”按钮,否则我怎样才能使只有选定的文本为粗体而下一个字符不是?

【问题讨论】:

    标签: c# winforms richtextbox rtf bold


    【解决方案1】:

    您应该将选择后的字体设置为原始字体。

    如果需要,可以保存SelectionStartSelectionLength 并调用Select 方法再次选择文本。

    // Remember selection
    int selstart = control.SelectionStart;
    int sellength = control.SelectionLength;
    
    // Set font of selected text
    // You can use FontStyle.Bold | FontStyle.Italic to apply more than one style
    control.SelectionFont = new Font(control.Font, FontStyle.Bold);
    
    // Set cursor after selected text
    control.SelectionStart = control.SelectionStart + control.SelectionLength;
    control.SelectionLength = 0;
    // Set font immediately after selection
    control.SelectionFont = control.Font;
    
    // Reselect previous text
    control.Select(selstart, sellength);
    

    这样文本保持选中状态,之后的字体仍然正确。

    【讨论】:

    • 你知道我怎么可以加粗和斜体吗?
    • 我知道这是一个旧线程,但为了其他人的利益,FontStyle 有 Flags 属性,所以你可以做 FontStyle.Bold | FontStyle.Italic等
    • 我认为这有点过时了。它只在粗体文本的字体之前保留文本,但之后的文本也是粗体,我认为这不是应该的..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多