RichTextBox.GetCharIndexFromPosition returns wrong value

I have a RichTextBox in a Form that I populate line-by-line (due to formatting, etc.) from my Form_Load function.

While loading, I use GetCharIndexFromPosition function and if the RichTextBox height can accommodates all text lines then the above function always returns the correct CharIndex. If however the RichTextBox height can't accommodate all text lines then for lines past the end of viewable area the GetCharIndexFromPosition returns wrong CharIndex values and i get scrambled text.

As part of trying to resolve the problem I made the Form height (in IDE) fairly small and then in Form_Load function I first changed the height (to accommodate all text lines) and I still get the wrong outcome, i.e. all lines past the original Form size appear wrong. If I then reload the contents, after the form is shown with the new height, then I get the same (bad) result for all lines past the end of viewable are, same as previously. If I bypass that function and always use .TextLength (as I can while loading but not always) then everything is shown properly so I'm sure it's something related to that function that's causing the problem.

Any ideas as to what could be the problem?

Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

I think the problem with the GetCharIndexFromPosition method is that it uses a Screen Point to know where to go.   Since lines below the visible area of the RichTextBox are not on the screen and invisible they do not correlate to a screen point.  Is it possible to Scroll the RichTextBox down as enough lines are added to go below view?   Maybe scrolling the last character into view may provide a point to reference to add more text.
gem56Author Commented:
I think you may be right about the Screen Point.

To answer your question, at times it may be possible to scroll down but that would place too much of a limitation on what I'm trying to achieve.
gem56Author Commented:
hi jjardine,
I think that I've resolved the problem and eve though I'm not seeing any visible problems I'm not absolutely sure if it has any other implications.

In the function where I add a NewLine to the RichTextBox I also increase the height of the RichTextBox.

Do you see any obvious implications?

  Dim pt As System.Drawing.Point = GetPositionFromCharIndex(.TextLength)
  If (.Height < pt.Y + 50) Then .Height = pt.Y + 50

Open in new window


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic.NET

From novice to tech pro — start learning today.