¿Cómo mover la barra de desplazamiento hacia arriba una línea? (En C # RichTextBox)

StackOverflow https://stackoverflow.com/questions/205794

  •  03-07-2019
  •  | 
  •  

Pregunta

Para mi C # RichTextBox, quiero hacer lo mismo que al hacer clic en la flecha hacia arriba en la parte superior de una barra de desplazamiento vertical, que mueve el RichTextBox aparece una línea hacia arriba. ¿Cuál es el código para esto? Gracias!

¿Fue útil?

Solución

Esto es lo que hago:

using System.Runtime.InteropServices;

[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, uint wMsg, 
                               UIntPtr wParam, IntPtr lParam);

luego llama:

SendMessage(myRichTextBox.Handle, (uint)0x00B6, (UIntPtr)0, (IntPtr)(-1));

Parece que funciona bien, aunque es posible que necesites modificar un poco las cosas.

Espero que ayude.

Otros consejos

Para futuras referencias, el mensaje EM_LINESCROLL es lo que envía a cualquier control de edición multilínea para establecer la posición de desplazamiento. Puede desplazarse vertical u horizontalmente. Consulte MSDN para obtener más información.

También puede usar el método de selección de edición enriquecida, donde establece el índice de caracteres (que puede obtener con EM_LINEINDEX) y luego llame a RichEdit.ScrollToCaret, es decir:

RichEdit.SelectionStart = SendMessage(RichEdit.Handle, EM_LINEINDEX, ScrollTo, 0);
RichEdit.ScrollToCaret();

Esto desplazará esa línea a la parte superior del control de edición.

window.scrollBy (0,20);

Esto desplazará la ventana. 20 es un valor aproximado que he usado en el pasado que generalmente es igual a una línea ... pero, por supuesto, el tamaño de la fuente puede afectar la distancia que realmente tiene una línea.

Si puede obtener el control de desplazamiento para el cuadro de texto enriquecido, debería poder obtener su propiedad SmallChange y usarla para desplazar el texto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top