C # RichTextBox Remover SelectionBackColor personalizado

Depois de ter feito alguma pesquisa, acredito que estou fazendo a mesma pergunta queRemover richtextbox SelectionBackColor. Eu encontrei o mesmo problema, mas acredito que as respostas nesse segmento foram insuficientes, pois a pergunta não foi explicada claramente. Por favor veja abaixo:

Em umRichTextBox, como é que euretirar um costumeBackColor de parte, mas não de todo, do texto (SelectionBackColor) para que assuma oBackColor do controlemesmo que issoBackColor mudanças no futuro?

Eu tenho um método que destaca algum texto e altera suaBackColor usandoSelectionBackColor. Eu tenho outro método que altera oBackColor de todo o controle. Esses eventos podem acontecer de forma independente.

Se eu quiser "remover" algunsSelectionBackColor, Posso tentar definir oSelectionBackColor paraColor.Transparent, mas acaba sendo branco. Tudo bem, temporariamente, se meuRichTextBoxéatual BackColor é branco. Se eu definirSelectionBackColor para o atualBackColor, está bom temporariamente,até que BackColor mude de outro método.

Depois deRichTextBox.BackColor mudou, qualquer lugar destacado anteriormente usa branco ou o anteriorBackColor, em vez de assumir a nova cor como texto que não havia destacado anteriormente.

Tentei excluir e substituir o texto, mas isso nega a capacidade de reter qualquer outra formatação personalizada desse texto, que eu saiba. ConfiguraçãoSelectionBackColor nulo não funciona.

Pode-se ver facilmente do que estou falando usando o código abaixo:

protected override void OnLostFocus(EventArgs e)
{
    base.OnLostFocus(e);
    this.BackColor = Color.Gray;
    if (SelectionLength > 0)
    {
        SelectionBackColor = Color.Yellow;
    }
}

protected override void OnGotFocus(EventArgs e)
{
    base.OnGotFocus(e);
    this.ResetBackColor();
    if (SelectionLength > 0)
    {
        // The goal of this line is to "remove" the yellow.
        // By assigning it any value, it seems to have lost
        // the ability to use the control's BackColor normally.
        SelectionBackColor = this.BackColor;// or Color.Transparent
    }
}

Digite algum texto em um personalizadoRichTextBox objeto com o código acima, destaque uma pequena parte dele e faça a caixa perder o foco. Você verá o texto destacado em amarelo. Então, faça a caixa ganhar foco. O fundo amarelo desaparecerá, como esperado. No entanto, se você mover o cursor em algum lugar do texto e fazer o controle perder o foco novamente, verá que o texto destacado anteriormente não assume a cor cinza de fundo.

questionAnswers(2)

yourAnswerToTheQuestion