Frage

Ich habe ein Formular mit einer RichTextBox und einer Bildlaufleiste. Ich möchte halten können Text in das Textfeld anhängen, ohne meine Auswahl zu verlieren. Ich kann die Selection und SelectionLength speichern, bevor ich den Text anhängen und legen Sie es zurück und es funktioniert. Das Problem ist, wenn es die Auswahl rückgängig zu machen kommt. Das Beste, was ich tun könnte, um die Selection an der richtigen Position zurückversetzt, aber ich muss die Maus bewegen, so dass es Text wählt wieder. Ich verwende die folgenden Funktionen vor und nach dem ich fügen Sie den Text ein:

Private Sub StopRepaint()
Dim pt As Point
' Stop redrawing:
SendMessage(txtchat.Handle, WM_SETREDRAW, 0, pt)
' Stop sending of events:
eventmask = SendMessage(txtchat.Handle, EM_GETEVENTMASK, 0, pt)
End Sub

Private Sub StartRepaint()
Dim pt As Point
' turn on events
SendMessage(txtchat.Handle, EM_SETEVENTMASK, 0, pt)
' turn on redrawing
SendMessage(txtchat.Handle, WM_SETREDRAW, 1, pt)
' this forces a repaint, which for sotxtchat reason is necessary in sotxtchat cases.
txtchat.Invalidate()
End Sub

Wenn meine Scrollbar Position nicht vollständig unten ist, ich bin es Einstellung nach dem Text mit diesem zurück angefügt:

If Not isbottom(getpos) Then
    PostMessageA(txtchat.Handle, WM_VSCROLL, SB_THUMBPOSITION + _
                       &H10000 * getpos(), Nothing)
End If

Mein Hauptziel ist es, Text zu markieren und kopieren, auch wenn neuer Text der richtextbox angefügt wird. Jeder weiß, wie richtig Text in umgekehrter Richtung wählen oder einfach mein Problem beheben Text abgewählt werden? Danke.

War es hilfreich?

Lösung

Ich würde versuchen, „wählbare Blöcke“ halten jede hängten Platte von Text unabhängig von dem nächsten Block zu machen. So ähnlich wie MSN Messenger. Sie können die „Platten“ erscheinen nahtlos machen und einen Stringbuilder verwenden, können den letzten Block sicher als einzelner Strom exportieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top