Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1017
  • Last Modified:

RichTextBox.GetCharIndexFromPosition returns wrong value

Hi,
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?

/Michael
0
gem56
Asked:
gem56
  • 2
1 Solution
 
jjardineCommented:
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.
0
 
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.
0
 
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

0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

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