I'm sure there are several solutions but my first thought is as follows: e.g. first second third fourth that wraps fourth that wraps fourth that wraps fourth that wraps string[] lines = richTextBox.Lines; i.e. lines[0] returns "first", lines[3] returns "fourth that wraps fourth that wraps fourth that wraps fourth that wraps". 1) Create a class LineClass with properties: int FirstCharacter, int LastCharacter, string Line. 2) Add an entry for each line to a List. Remember there is a return character between lines so that in my example: first instance of LineClass FirstCharacter=0, LastCharacter=4, Line=first second instance of LineClass FirstCharacter=6, LastCharacter=11, Line=second 3) Use GetFirstCharIndexOfCurrentLine to determine the cursor location. 4) Loop through List to get the line you need. If the line is a result of wrapping, your answer in 3) will fall between FirstCharacter and LastCharacter for that entry. Otherwise it will equal FirstCharacter. Good Luck.