While the RichTextBox control can host other Controls, the drawing surface
internal to it (where the text is displayed) doesn't offer an access for
adding controls. So, unfortunately, the LinkLabel doesn't move any more than
the scroll bars themselves do.
I accomplished something functionally similar to this once, by setting the
color of the text that I wanted to be linked. When the special text was
clicked, I used the GetCharIndexFromPosition method to find out the closest
character clicked, then I looked the index up in a list I made at the time
of populating the text of the control.
That doesn't give you the functionality of a LinkLabel in terms of firingan
event of its own or highlighting the text when the mouse enters, but it's
something. It might be possible to trap the MouseMove event of the
RichTextBox, and determine what the closese character to the mouse is, and
change the forecolor and/or underline properties of the text at that point,
but I've never tried it.
I don't think the RichTextBox gives enough information to do this, but if
you really need to use the actual LinkLabel, you could try to intercept the
VScroll event of the RichTextBox and then try to re-position the label
yourself. You may have to play around with it so it doesn't sit on top of
the horizontal scroll bar, if you use one.
Another, completely different, option would be to try the WebBrowser
control. Replace the RichTextBox with that, then stick your text in as HTML,
and your link text as an anchor. That may get you what you need to
accomplish, without having to use the RichTextBox at all.