2009-03-21 11 views
0

J'ai un formulaire avec une riche zone de texte et une barre de défilement. Je veux pouvoir continuer à ajouter du texte à la zone de texte sans perdre ma sélection. Je peux enregistrer les selectionstart et selectionlength avant que j'ajoute le texte et le remet en marche et cela fonctionne. Le problème est quand il s'agit de la sélection inverse. Le mieux que je puisse faire est de remettre le selectionstart à la bonne position mais je dois déplacer la souris pour qu'elle sélectionne à nouveau le texte. J'utilise les fonctions suivantes avant et après que j'ajouter le texte:Inverser la sélection de texte par programmation dans une zone de texte enrichi (vb.net)

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 

Si ma position scrollbar est pas en bas complet, je suis la mise en arrière en utilisant cette fois le texte ajouté:

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

Mon objectif principal est de pouvoir sélectionner et copier du texte même lorsqu'un nouveau texte est ajouté à la riche zone de texte. Quelqu'un sait comment sélectionner correctement le texte à l'envers OU résoudre facilement mon problème de désélection du texte? Merci.

Répondre

1

Je voudrais essayer de faire des "blocs sélectionnables" garder chaque dalle de texte annexe indépendante du bloc suivant. Un peu comme MSN Messenger. Vous pouvez rendre les "panneaux" transparents et l'utilisation d'un stringbuilder peut exporter le bloc final en toute sécurité en un seul flux.

Questions connexes