2008-10-03 5 views
4

Il existe un moyen de conserver le défilement en bas pour une zone de texte multiligne?Défilement d'une texbox toujours en bas

Quelque chose comme dans le VB6

txtfoo.selstart=len(txtfoo.text) 

J'essaie avec txtfoo.selectionstart = txtfoo.text.length sans succès.

Cordialement.

+0

vous avez deux solutions (la vôtre et @ monoxyde) qui semblent faire ce que vous voulez. Je pense que vous devriez accepter l'un d'entre eux. –

+0

Sauf que vous ne pouvez pas accepter votre propre solution * shrugs * meh, cela ne me dérange pas. –

+0

Copie possible de [Comment faire défiler automatiquement vers le bas d'une zone de texte multiligne?] (Http://stackoverflow.com/q/898307/10263). (En fait, cette question est plus ancienne, mais l'autre a plus de réponses et plus de votes.) –

Répondre

7

Ok, j'ai trouvé que la solution était d'utiliser

txtfoo.AppendText 

au lieu de

txtfoo.text+="something" 
4

L'autre solution consiste à utiliser:

txtfoo.Text += "something"; 
txtfoo.SelectionStart = txtfoo.Text.Length; 
txtfoo.ScrollToCaret(); 
0

question intéressante. Je devine que vous essayez de sélectionner le texte via la charge de formulaire? Je ne peux pas le faire travailler sur la forme du formulaire, mais je peux le faire en cliquant sur le formulaire. Wierd. :)

Public Class Form1 

    Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click 
     ScrollTextbox() 
    End Sub 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     ScrollTextbox() 
    End Sub 

    Private Sub ScrollTextbox() 
     TextBox1.SelectionStart = TextBox1.TextLength 
     TextBox1.ScrollToCaret() 
    End Sub 

End Class 

Si cela est absolument nécessaire, vous pouvez utiliser une minuterie.

+0

Je suppose que cela a quelque chose à voir avec le formulaire n'étant pas encore correctement initialisé dans le gestionnaire de charge. Essayez de mettre un appel à this.Show() d'abord, devrait éclaircir tous les problèmes. –