• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1049
  • Last Modified:

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?

  • 2
1 Solution
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

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: CompTIA Cloud+

The CompTIA Cloud+ Basic training course will teach you about cloud concepts and models, data storage, networking, and network infrastructure.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now