Auteur de questions
Faire défiler le Scrollbar d'un RichTextBox

Question
-
Bonjour,
je m'explique. J'ai un RichTextBox dont je souhaite colorier car ce qu'il contient est du HTML. Pour cela, je travaille avec un second RichTextBox. Une fois colorié, j'applique la couleur au RichTextBox 1. Pour récupérer la position du curseur, jje fais :
Depart = Form1.RichTextBox1.SelectionStart ...Colorisation... Form1.RichTextBox1.SelectionStart = Depart
Mais la position du Scroolbar n'est pas à la bonne place. J'aimerais que cela ne change pas.
Autrement dit :
Je récupère la position du Scrollbar, je transfère le RTB1 vers le RTB2, je colorise je transfère le RTB2 vers le RTB1, je remet la valeur du Scrollbar. Merci
Toutes les réponses
-
J'ai un début ! J'arrive à récupérer la valeur de défilement mais j'ai un déséquilibrage de la pile lors du SetScrollInfo.
Const SBS_VERT = 1 Private Const SIF_RANGE = &H1 Private Const SIF_PAGE = &H2 Private Const SIF_POS = &H4 Private Const SIF_DISABLENOSCROLL = &H8 Private Const SIF_TRACKPOS = &H10 Private Const SIF_ALL = (SIF_RANGE Or SIF_PAGE Or SIF_POS Or SIF_TRACKPOS) Public Structure SCROLLINFO Public cbSize As Integer Public fMask As Integer Public nMin As Integer Public nMax As Integer Public nPage As Integer Public nPos As Integer Public nTrackPos As Integer End Structure Private Declare Function GetScrollInfo Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal nBar As Integer, ByRef lpScrollInfo As SCROLLINFO) As Boolean Private Declare Function SetScrollInfo Lib "user32.dll" (ByVal hWnd As IntPtr, ByVal nBar As Integer, ByVal lpScrollInfo As SCROLLINFO, ByVal fRedraw As Boolean) As Integer Public SInfo As New SCROLLINFO, Faire As Boolean = True Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim FichierEnCours As String = "E:\www\index.php" RichTextBox1.Text = My.Computer.FileSystem.ReadAllText(FichierEnCours) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click SetScrollInfo(RichTextBox1.Handle, SBS_VERT, SInfo, True) End Sub Private Sub RichTextBox1_VScroll(sender As Object, e As EventArgs) Handles RichTextBox1.VScroll SInfo.fMask = SIF_ALL GetScrollInfo(RichTextBox1.Handle, SBS_VERT, SInfo) End Sub
Merci
-
Pour faire défiler un RTB, on peut envoyer WM_VSCROLL, comme dans cet exemple que j'avais posté en C# (quasi même code en VB) : send MouseScroll from PictureBox to RichTextBox
-