elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Texto en richtextbox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Texto en richtextbox  (Leído 3,857 veces)
Adrylek

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Texto en richtextbox
« en: 9 Julio 2014, 03:19 am »

Hola, tengo una pregunta un poco estúpida pero bastante molesta.
Tengo un richtextbox donde aparece mucha información rápidamente, pero el problema es que la barra para subir y bajar siempre se queda arriba, y la nueva información se queda abajo.
Es muy molesto siempre que quieres cojer algo tener que mover la barra hacia abajo, así que la pregunta es cómo podría hacer para que se quedara sola abajo.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Texto en richtextbox
« Respuesta #1 en: 9 Julio 2014, 03:28 am »

no se nada de .net, pero según google esto podría servir

Código:
richTextBox.ScrollToEnd();

Código:
richTextBox.SelectionStart = richTextBox.Text.Length;

Código:
richTextBox.ScrollToCaret();

según leo la ultima es la mejor opción... prueba esas y si no te sirven espera a ver si alguien más se pasa por aquí


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Adrylek

Desconectado Desconectado

Mensajes: 26


Ver Perfil
Re: Texto en richtextbox
« Respuesta #2 en: 9 Julio 2014, 03:47 am »

Gracias, la última opción me ha funcionado.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Texto en richtextbox
« Respuesta #3 en: 9 Julio 2014, 03:51 am »

debido a que solo copié texto y no se de lo que hablo, recomiendo que pruebes tu programa viendo el administrador de tareas de windows asegurandote que no consuma demasiado procesador :P si lo hace, podrías usar un timer o algo así que a 100ms sería suficiente para el ojo humano :P
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: Texto en richtextbox
« Respuesta #4 en: 9 Julio 2014, 06:48 am »

El código que te ha dado Lex colócalo dentro del evento 'TextChanged' del RichTextBox en vez de usar el timer. De esta manera te aseguras de que se ejecute el código sólo cuando haya información nueva.
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: Texto en richtextbox
« Respuesta #5 en: 9 Julio 2014, 11:38 am »

Hay que tener en cuenta que el método sugerido por @engel lex, "ScrollToCaret", como su propio nombre indica lo único que hace es deslizar el ScrollBar hasta la posición del Caret (el Caret es el cursor de texto) así que usarlo por si solo no sería una solución viable según que caso, ya que si no modificas la posición del Caret, siempre va a escrollear a la misma posición

Si estás usando el método "AppendText" para adjuntar texto:
Código
  1. RichTextBox1.AppendText("Texto")
Entonces una llamada a "ScrollToCaret" será suficiente, porque el método "AppendText", además de adjuntar texto, pone la posición del Caret al final del texto adjuntado.

Por otro lado, si estás adjuntando texto de esta manera:
Código
  1. RichTextBox1.Text &= "Texto"
Entonces necesitas modificar manualmente la posición del Caret, para poder Scrollear hacia abajo.

Por eso, según el caso, te sugiero una de las siguientes soluciones, aunque de todas formas la última solución deberías evitarla siempre que puedas, ya que lo correcto es usar el método "AppendText":

· .AppendText:
Código
  1.    Private Sub RichTextBox_AutoScroll(ByVal sender As Object, ByVal e As EventArgs) _
  2.    Handles RichTextBox1.TextChanged
  3.  
  4.        If CBool(sender.TextLength) Then
  5.            sender.ScrollToCaret()
  6.        End If
  7.  
  8.    End Sub

· .Text &=
Código
  1.    Private Sub RichTextBox_AutoScroll(ByVal sender As Object, ByVal e As EventArgs) _
  2.    Handles RichTextBox1.TextChanged
  3.  
  4.        Dim _TextLength As Integer = sender.TextLength
  5.  
  6.        With sender
  7.  
  8.            If CBool(_TextLength) Then
  9.  
  10.                .SelectionStart = _TextLength
  11.                .ScrollToCaret()
  12.  
  13.            End If
  14.  
  15.        End With
  16.  
  17.    End Sub

Nota: Obviamente, si piensas escribir manualmente en el Control, entonces la solución con el método ".Text &=" de poco sirve. ya que estoy enviando el Caret al final del texto, siempre.

Saludos
« Última modificación: 9 Julio 2014, 15:06 pm por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines