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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Intentar hacer scroll bar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Intentar hacer scroll bar  (Leído 7,888 veces)
Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Intentar hacer scroll bar
« en: 23 Diciembre 2015, 01:53 am »

Hola:

El componente richTextBox en la aplicación WPF, al introducir datos, se crea el auto scroll, luego se va viendo lo lúltimo recibido abajo. El código es este.



Código
  1.            // Asignar el valor de la trama al richTextBox.
  2.            richTextBox1.Text = Recibidos + "\n";
  3.  
  4.            // Selecciona la posición final para leer los mensajes entrantes.
  5.            richTextBox1.SelectionStart = richTextBox1.Text.Length;
  6.  
  7.            // Mantiene el scroll en la entrada de cada mensaje.
  8.            richTextBox1.ScrollToCaret();

El problema es usarlo con WPF, no hace ningún tipo de scrollbar.

¿Cuál es su equivalencia para WPF?

Un cordial saludos.

PD: Uso Visual Studio Community 2015.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Intentar hacer scroll bar
« Respuesta #1 en: 23 Diciembre 2015, 02:58 am »

Primero las soluciones:

1. Tanto en WinForms cómo WPF puedes utilizar el método AppendText:
Código
  1. rtb.AppendText("Hello World" & Environment.NewLine)

2. En WPF, para asignar el texto de un control RichTextBox debes crear un FlowDoc:
Código
  1. FlowDocument doc = new FlowDocument();
  2. doc.Blocks.Add(new Paragraph(new Run("Hello World" + Environment.NewLine)));
  3.  
  4. rtb.Document = doc;

3. Para desplazarte hasta el final del documento, puedes utilizar el método ScrollToEnd:
Código
  1. rtb.ScrollToEnd();



Segundo, las recomendaciones, aunque intuyo que no me vas a hacer caso...

1. Para lo que quieres hacer, es un error utilizar un RichTextBox ya sea en WinForms o WPF, ya que como el nombre del control indica por si mismo su finalidad es mostrar texto con formato rich, pero si no lo utilizas con este fin entonces estarás sobrecargando la aplicación sin motivo coherente.

En su lugar debes utilizar un control TextBox, el cual además en WPF si que encontrarás la propiedad Text para mayor comodidad. (y también el método ScrollToEnd)
Nota: Asegúrate de modificar la propiedad TextBox.MaxLength para tus necesidades, ya sea en tecnología WinForms o WPF.

2. Los nombres de los controles (o mejor dicho, de los miembros marcados con visibilidad internal/Friend) los escribes en Camel-Case, pero se deben escribir en Pascal-Case; esto sería así:
NombreDeControl
o
RichTextBox1


Tal vez te parecerá una tontería, pero siguiendo correctamente las directrices de nomenclatura te acostumbrarías mucho mejor al lenguaje en cuestión, y aprovecharias el potencial para ser mejor programador, ya que reforzarías este aspecto que un programador debe tener presente.

Te dejo un link interesante sobre los beneficios generales de esto:
https://en.wikipedia.org/wiki/Naming_convention_%28programming%29

Saludos.


« Última modificación: 23 Diciembre 2015, 03:14 am por Eleкtro » En línea



Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Re: Intentar hacer scroll bar
« Respuesta #2 en: 23 Diciembre 2015, 05:31 am »

Hola:

Muchas gracias por la ayuda, voy a probar todo palmo a palmo.

En cuanto al usar TextBox,lo hacía antiguamente por el 2008 y prsenté este vídeo. Como verás, no había forma de quitar caracteres raros del principio y fin que muestra este vídeo como prueba.



Dscubrí richTextBox en su época ya por el 2010, ahora con el 2015 me hancontado otros programadores que use listBox, me parece como más incómodo y no se maneja igual que los dos anteriores.

Deja hacer pruebas y te comento, gracias de nuevo por los consejos.

Un cordial saludo.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Intentar hacer scroll bar
« Respuesta #3 en: 23 Diciembre 2015, 06:18 am »

En cuanto al usar TextBox,lo hacía antiguamente por el 2008 y prsenté este vídeo. Como verás, no había forma de quitar caracteres raros del principio y fin que muestra este vídeo como prueba.

No se nada de electrónica, pero creo que lo que el video prueba es que estuviste tratando incorrectamente los datos recibidos.

Primero debes tratar los bytes al formar el string eligiendo la codificación correcta (eliminar todas las terminaciones nulas enviadas por el dispositivo), y luego mostrarlo en el TextBox o control deseado.

Si volvieses a hacer el experimento, simplemente mide la longitud del String construido ( String.Length() ) y verás que se cuentan más caracteres de los que realmente crees que tiene; el TextBox simplemente representó esos caracteres nulos que no eliminaste y que no se ven a simple vista.

Quizás esto te sirva:
https://msdn.microsoft.com/en-us/library/system.io.ports.serialport.discardnull%28v=vs.110%29.aspx

Saludos.
« Última modificación: 23 Diciembre 2015, 06:26 am por Eleкtro » En línea



Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Re: Intentar hacer scroll bar
« Respuesta #4 en: 23 Diciembre 2015, 06:30 am »

Hola:

Eso pensé, esos carácteres que no se ven se son los comportamientos, los más usados son \n y \r, pero no los uso.

Aquí hay un ejemplo rápido.
http://www.codeproject.com/Articles/46603/A-PicRS-control-with-a-PIC-microcontroller-seri

Desde que sustituí a richTextBox, se acabaron los problemas, lo curioso que me dicen que use el santo ListBox, ese no me gusta mucho porque eliges línea a línea.

Saludos.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Intentar hacer scroll bar
« Respuesta #5 en: 23 Diciembre 2015, 07:00 am »

Desde que sustituí a richTextBox, se acabaron los problemas, lo curioso que me dicen que use el santo ListBox, ese no me gusta mucho porque eliges línea a línea.

Hombre, el (Rich)TextBox (o EditControl) sirve para representar texto editable o no, y el ListBox para representar elementos de texto estáticos seleccionables para el usuario, como ves no tienen mucho que ver...

El ejemplo no puedo probarlo ya que no manejo esas cosas de electrónica, pero te curraste muchísimo la publicación, es de 10,
eso si, desde el 2008 y que todavía se te resistan estas cositas de los timers... eso baja la nota :P.

Saludos!
En línea



Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Re: Intentar hacer scroll bar
« Respuesta #6 en: 23 Diciembre 2015, 09:58 am »

Hola:

Me he pegado años sin usar RS232, se me ha olvidado muchísimo, ejjejeje. Ahora estoy de nuevo pero con Arduino. Dentro de poco subo las entradas de Arduino por puerto serie, el de encender y apagar un Led ya lo he publicado que puedes ver aquí.

Poco a poco a recordar.

Gracias por todo, cuando acabe el ejemplo completo, lo pongo aquí.

Edito
:


He hecho este código. A pesar que se incluye texto y el lo último, no se muestra la barra del scroll.

Código
  1.            richTextBox.AppendText(Recibidos);
  2.  
  3.            var doc = new FlowDocument();
  4.            doc.Blocks.Add(new Paragraph(new Run(Recibidos)));
  5.            richTextBox.Document = doc;
  6.  
  7.            richTextBox.ScrollToEnd();

No puedo desplazar nada porque no se muestra la barra del lateral o scroll.

¿Se te escapa algo o se me escapa a mi?

Saludos.
« Última modificación: 23 Diciembre 2015, 15:38 pm por Meta » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Intentar hacer scroll bar
« Respuesta #7 en: 23 Diciembre 2015, 16:39 pm »

No puedo desplazar nada porque no se muestra la barra del lateral o scroll.

Eso lo podrías resolver tu mismo...


Repasa los otros miembros de la class RichTextBox.

Saludos
« Última modificación: 23 Diciembre 2015, 16:41 pm por Eleкtro » En línea



Meta


Desconectado Desconectado

Mensajes: 3.499



Ver Perfil WWW
Re: Intentar hacer scroll bar
« Respuesta #8 en: 24 Diciembre 2015, 05:28 am »

Hola:

Lo he intentado así, pero no funciona.
Código
  1.           richTextBox.AppendText(Recibidos);
  2.  
  3.            richTextBox.VerticalScrollBarVisibility { get; set; }
  4.  
  5.            var doc = new FlowDocument();
  6.            doc.Blocks.Add(new Paragraph(new Run(Recibidos)));
  7.            richTextBox.Document = doc;
  8.  
  9.            richTextBox.ScrollToEnd();

Espero que no tenga que tocar nada en el XML.

Saludos.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Intentar hacer scroll bar
« Respuesta #9 en: 24 Diciembre 2015, 12:09 pm »

Lo he intentado así, pero no funciona.
Código
  1. richTextBox.VerticalScrollBarVisibility { get; set; }

Solo tienes que asignarle el valor a la propiedad:
Código
  1. richTextBox.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;

PD: Aparte, en el último código que has mostrado, o le asignas el FlowDoc o utilizas el método AppendText, pero no hagas las dos cosas al mismo tiempo (no tiene sentido hacerlo, ya que viene siendo lo mismo).

Saludos
« Última modificación: 24 Diciembre 2015, 12:17 pm por Eleкtro » En línea



Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

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