Autor Beitrag
haschme
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57
Erhaltene Danke: 1



BeitragVerfasst: Do 30.07.15 09:43 
Hallo,

ich entwickel gerade ein UserControl, das unter anderem eine RichtextBox verwendet.
Diese soll als DateiViewer dienen, also Textinhalte von großen Dateien (teilweise Millionen von Datensätze) anzeigen.

Mein Problem ist zur Zeit, dass mir immer wieder beim markieren eines Textbereichs der Cursor verspringt.
Leider weis ich auch nicht wie ich das Problem abfangen kann.

Ich würde gerne bevor dieser ungewollte Cursorsprung passiert die aktuelle Cursorposition speichern und dann nach dem Sprung einfach zur gespeicherten Position zurückspringen.

Gibt es eine Möglichkeit den Cursorsprung abzufangen? Im selectionchanged - Event z.B. ist es ja leider schon zu spät.

Liebe Grüße
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 30.07.15 09:55 
Zitat:
Gibt es eine Möglichkeit den Cursorsprung abzufangen? Im selectionchanged - Event z.B. ist es ja leider schon zu spät.


Warum? Nach SelectionChanged ist vor SelectionChanged. Also in SelectionChanged die aktuelle Position merken um beim nächsten SelectionChanged dann diese Info zu verwenden um zu wissen wo der Cursor vorher war.

Für diesen Beitrag haben gedankt: haschme
haschme Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57
Erhaltene Danke: 1



BeitragVerfasst: Do 30.07.15 10:39 
Vielen Dank für die schnelle Antwort!

Ja da hast du natürlich Recht.

Leider weis ich nur nicht wie genau ich das ganze abfangen kann, also bevor der Sprung passiert.

Ich weis nicht wie ich herrausfinden soll wann der Cursor springt und wann nicht.

Ich muss ja irgendwie abfragen können ob der Cursor springen wird.

Das ganze passiert während des Markierens.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 30.07.15 11:44 
Spekulativ würde ich sagen in SelectionChanged mußt du dir SelectionStart und SelectionLength merken. Bei der nächsten Änderung, also dem nächsten SelectionChanged Event, prüfst du deine Condition ob dieses Änderung ok ist und setzt halt dann SelectionStart und SelectionLength entsprechend auf die gemerkten Werte zurück wenn nicht. Dabei aufpassen den das wird ja wieder ein SelectionChanged auslösen. Du mußt also den Event vermutlich so veriegeln das die Prüfung in SelectionChanged bei einer Änderung aus SelectionChanged nicht durchgeführt wird sonst baust du dir eventuell eine Endlosschleife bzw. einen StackOverflow.

Für diesen Beitrag haben gedankt: haschme