2016-10-24 4 views
0

J'utilise un richtexbox pour placer des journaux pour une application de la mienne. Je l'utilise aussi comme une sorte de barre de progression pour un travailleur en arrière-plan. Je n'entrerai pas dans les détails, mais l'application parcourt plusieurs périphériques et rassemble des données, les données en cours de traitement s'affichent sur la dernière ligne de la zone riche et sont remplacées chaque fois qu'une nouvelle est traitée.RichTextBox défile automatiquement vers le bas lors du remplacement d'une ligne

Voici un petit échantillon du journal.

Found 239 record(s), Transferred 239 record(s) from: 10.10.10.10 - 10/24/2016 7:37:45 PM 
Found 42 record(s), Transferred 42 record(s) from: 10.10.10.11 - 10/24/2016 7:37:58 PM 
43593... 

La dernière ligne serait remplacée par d'autres données lors du traitement. Jusqu'à ce qu'il soit fini et remplacé à nouveau comme ça.

Found 239 record(s), Transferred 239 record(s) from: 10.10.10.10 - 10/24/2016 7:37:45 PM 
Found 42 record(s), Transferred 42 record(s) from: 10.10.10.11 - 10/24/2016 7:37:58 PM 
Found 2 record(s), Transferred 2 record(s) from: 10.10.10.12 - 10/24/2016 7:38:03 PM 
986035... 

j'ajouter des données à l'aide de richtextbox AppendText, cela fonctionne très bien et fait défiler la richtextbox au fond quand j'ajouter de nouveaux enregistrements. Mais pour ma « barre de progression » je remplace la dernière ligne comme celui-ci:

Me.rtbLogs.Rtf = Me.rtbLogs.Rtf.Replace(Me.rtbLogs.Lines(rtbLogs.Lines.Length - 1), e.UserState.ToString()) 

Tout fonctionne bien sauf pendant qu'il remplace les textes défile RichTextBox vers le haut.

+0

double possible de [C# Prévention RichTextBox de défilement/saut vers le haut] (http://stackoverflow.com/questions/12787066/c-sharp-preventing-richtextbox-from-scrolling-jumping- en haut) – Jim

Répondre

0

Vous devez faire défiler jusqu'à la fin du texte. Essayez ceci:

' Append the new text and a new line 
RichTextbox1.AppendText("New Text" & vbNewLine) 
    ' Sets the starting point of the selection   
RichTextbox1.SelectionStart = Len(RichTextbox1.Text) 
    ' Scrolls to the caret 
RichTextbox1.ScrollToCaret() 
    ' Select the range 
RichTextbox1.Select()