I've been messing about with the richtextbox control so that I can select
multiple different fonts and change their styles, sizes etc together. But if
I test the performance this by filling the box full of characters there is a
noticeable lag while the update happens.
To do this I'm using the following code:

int selectionStart = rtbBody.SelectionStart;
int selectionLength = rtbBody.SelectionLength;
int selectionEnd = selectionStart + selectionLength;
for (int x = selectionStart; x < selectionEnd; ++x)
{
rtbBody.Select(x, 1);// Selects one character at a time

//Do code for checking/changing font styles, type size etc
}

It works perfectly apart from this delay. I've used unmanaged code to stop
the rtb updating while this is happening and it helps a bit.

Would it be more efficient if I manipulated the rtf directly in a string
builder and then placed it back into the richtextbox?

Looking at word, literally thousands of characters can be changed style,
font etc instantly. Does anyone know how they go about doing this?

Any help would be appreciated.

Chris