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.