为什么在更改 SelectionBackColor 后 "RichTextBox.SelectionBackColor" 没有恢复为新的和未选择的文本的默认值?

Why is the "RichTextBox.SelectionBackColor" not reverting to default on the new and unselected text, after the SelectionBackColor was changed?

我有一个RichTextBox。我正在努力仅更改所选文本的 SelectionBackColor

然后,我有一个 ToolStripMenuItem(暂且称它为 'buttonA'),它负责更改 SelectionBackColor选定的文本。我遇到的问题是点击buttonA后,RichTextBox中选中文本的背景色可以成功完成。但是,当我在更改后的背景颜色文本之后添加一些其他字符或文本时,它不会使用默认背景颜色。相反,它继续使用从 buttonA 分配的相同背景颜色,这是我不希望发生的。

起初,我以为我选择的文本的开始索引和结束索引有问题。但是,我认为它的代码没有任何问题。下面显示了代码示例:

SolidBrush textBgCol; //a variable to keep color

this.richTextBox1.Select = this.richTextBox1.SelectionStart, this.richTextBox1.SelectionLength;

this.richTextBox1.SelectionBackColor = Color.FromArgb(textBgCol.Color.A, textBgCol.Color.R, textBgCol.Color.G, textBgCol.Color.B);

  1. 我的一项努力是在 richTextBox1KeyDown 事件中将 SelectionBackColor 更改为 default。然而,新的或连续的字符和文本的背景颜色仍然与按钮 A 分配的相同。下面显示了代码示例:
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    this.richTextBox1.SelectionBackColor = default;
}
  1. 我也试过参考 但是,我认为这对我解决问题没有帮助。

  2. 除此之外,为了确认我的richTextBox1SelectionStartSelectionLength没问题,我还提到了这些:ref1, ref2, and ref3.


我可以知道任何其他解决方法吗?或者,我的代码中是否遗漏了任何内容?

根据@Jimi 的评论:

我只需要将 richTextBox1KeyDown 事件处理程序中的代码更改为:

if(richTextBox1.SelectionBackColor != richTextBox1.BackColor)
{
    richTextBox1.SelectionBackColor = richTextBox1.BackColor;
}

演示如下:

谢谢!