Hallo ihr,
in einem ChatClient habe ich eine RichTextBox - sobald ein Ereignis im Chat passiert, wird dieses unten angefügt. Dazu muss der Cursor meines Wissens erstmal unten platziert werden:
'chatmain ist die RichTextBox
chatmain.SelStart = Len(chatmain.Text) 'Cursor ans Textende
chatmain.SelLength = 0
chatmain.SelText = „Franz hat sich dem Chat angeschlossen.“ 'Text einfügen
Problem: Wenn jemand mal nach oben scrollen möchte, um etwas nachzulesen, um einen Textausschnitt zu markieren und/oder zu kopieren, dann wird er jedesmal wieder ans Textende „geworfen“, sobald etwas im Chat passiert.
Mir ist keine elegantere Möglichkeit eingefallen, außer: Aktuelle SelStart und SelLength merken. Dann ans Textende, den gewünschten Text anfügen, und dann den Cursor an die ursprüngliche Position setzen und die Markierung wieder so herstellen wie sie vorher war. Dabei flimmert der Text einmal kurz (aus Sicht des Users), aber es geht.
Das geht jedoch nur, wenn Text markiert wurde. Falls nur hochgescrollt wird, ohne etwas markiert zu haben, wird er auch wieder nach unten geschmissen.
Kann man dagegen etwas tun? Kann ich vielleicht auch die aktuelle Scroll-Position auslesen, speichern und neu setzen?
Oder gehts viel eleganter?
Grüße
Lars