Cómo subrayar selectivamente las cadenas en RichTextBox?

En mi programa después de hacer clic en el botón: las entradas de ListView seleccionadas deben copiarse en RichTextBox. ListView contiene información de contacto, y el efecto que quiero lograr es similar al de Oultook (al elegir contactos de la libreta de contactos). Parte de mi código que sirve para este propósito se ve así:

    private void toButton_Click(object sender, EventArgs e)
    {
        int start = 0;
        for (int i = 0; i < contactsListView.SelectedItems.Count; i++)
        {
            if (contactsTextBox.TextLength != 0) contactsTextBox.Text += "; ";
            start = contactsTextBox.TextLength;
            contactsTextBox.Text += contactsListView.SelectedItems[i].Text + " " + contactsListView.SelectedItems[i].SubItems[1].Text + " [" + contactsListView.SelectedItems[i].SubItems[2].Text + "]";
            contactsTextBox.Select(start, contactsTextBox.TextLength);       
            contactsTextBox.SelectionFont = new Font(contactsTextBox.SelectionFont, FontStyle.Underline);
            contactsTextBox.DeselectAll();
            contactsTextBox.SelectionFont = new Font(contactsTextBox.SelectionFont, FontStyle.Regular);
        }
    }

Desafortunadamente, FontStyle de alguna manera se hereda de todo el texto y todo lo que ingreso después de la entrada de ListView también está subrayado.

Así que mi pregunta es: ¿cómo subrayar solo cierto texto (donde he cometido un error)?

Hay un tema similar en stackoverflowaqu desafortunadamente en mi caso, la solución indicó que habrá desperdicio de recursos.