14

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

我发现这段代码大约可以工作:

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

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

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

4

1 回答 1

22

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

如果需要,您可以保存SelectionStartandSelectionLength并调用该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);

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

于 2011-10-28T00:51:39.193 回答