panelIDE.VerticalScroll.Value = lbLines.ItemHeWright * lbLines.SelectedIndex
panelIDE.VerticalScroll.Value = lbLines.ItemHeWright * lbLines.SelectedIndex
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Public Class Form1
Const EM_GETSCROLLPOS As Integer = 1245
Const EM_SETSCROLLPOS As Integer = 1246
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageW" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByRef lParam As Point) As Integer
Private Liste As New List(Of Integer)
Private Chaine As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
RichTextBox1.Text = String.Empty
Listbox1.Text = String.Empty
For i = 0 To 1000
RichTextBox1.Text = RichTextBox1.Text & (i + 1).ToString & Environment.NewLine
Next
End Sub
Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
SyncLineNumbers()
SynchroText()
End Sub
Private Sub SyncLineNumbers()
If RichTextBox1.Lines.Count <> Liste.Count Then
Do While RichTextBox1.Lines.Count > Liste.Count
Liste.Add((Liste.Count + 1).ToString)
Loop
Do While RichTextBox1.Lines.Count < Liste.Count
Liste.RemoveAt(Liste.Count - 1)
Loop
Chaine = String.Join(Environment.NewLine, Liste)
Listbox1.Text = chaine
End If
End Sub
Private Sub RichTextBox1_VScroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.VScroll
SynchroText()
End Sub
Private Sub SynchroText()
Dim pt As Point
SendMessage(RichTextBox1.Handle, EM_GETSCROLLPOS, 0, pt)
SendMessage(Listbox1.Handle, EM_SETSCROLLPOS, 0, pt)
End Sub
Private Sub Listbox1_TextChanged(sender As Object, e As EventArgs) Handles Listbox1.TextChanged
Listbox1.Text = Chaine
SynchroText()
End Sub
Private Sub Listbox1_Click(sender As Object, e As EventArgs) Handles Listbox1.Click
Chaine = Listbox1.Text
End Sub
End Class
Modifié le 18 juin 2017 à 14:56
Code lorsque l'on change le texte de la RichTextBox :
SyncLineNumbers :
Code lorsqu'on relève une touche :
CodeCS correspond à mon RichTextBox.
lbLines correspond à ma ListBox
panelIDE correspond au panel regroupant les deux éléments ci-dessus.
18 juin 2017 à 21:44
là ou tu l'as mis.
Tu peux soit remplir directement la fenêtre de propriété en mode design, soit mettre cette ligne dans le Load de ta form.
Je teste et je reviens vers toi
18 juin 2017 à 22:38
Résultats du test : Toujours la même chose, et si je met dans un Try Catch pour tester ce qui ne va pas, à partir de la 57, soit la dernière disponible selon la hauteur, bien quand j'ajoute des lignes, elles s'ajoutent plus. PS : la police est Courier New en 9,75! (10pt).
Et le code VerticalScroll.Maximum c'est le code que j'ai utilisé pour tester un truc mais ça n'a rien changé non plus
Pour ton bug lorsque on démarre avec une rtb vide, il suffit d'empêcher qu'elle soit vide : si elle est vide alors on lui remet un texte bidon du style un espace.
help plz
18 juin 2017 à 22:40