2011-03-09 13 views
5

Tengo un cuadro de texto enriquecido que sirve como un registro. El registro se desplaza automáticamente hacia abajo cuando se agrega un nuevo mensaje, lo cual es bueno. El único problema es cuando el usuario quiere ver algo en el registro desde antes; si se agrega un mensaje nuevo, el cuadro se desplaza automáticamente hacia abajo y evita que el usuario vea algo. Me gustaría poder comprobar si el cuadro de texto enriquecido se desplaza hacia abajo y, si no es así, hacia abajo.¿Está comprobando si una barra de desplazamiento de formularios de Windows se desplaza hacia abajo?

Actualmente puedo obtener la posición de desplazamiento en el espacio de texto virtual (SendMessage con EM_GETSCROLLPOS). También puedo obtener información de la barra de desplazamiento con GetScrollBarInfo pinvoke. ¿Pero cómo averiguo cuál es la parte inferior del espacio de texto virtual?

Gracias!

+0

wouln't sea más intuitivo si comprueba si el final del texto se encuentra en la zona visible? – TheBlastOne

+0

Claro, pero ¿cómo puedes hacer eso? – Janiels

+0

Ergh, SendMessage con WM_GETTEXT es todo lo que recuerdo. Tengo que desenterrarlo, no tengo eso a mano en este momento, lo siento, pero trataré de desenterrarlo más o menos hoy. – TheBlastOne

Respuesta

2

utilizar un control vScrollBar para su RichTextBox y gestionar sus eventos de desplazamiento

private void vScrollBar1_Scroll(object sender, ScrollEventArgs e) 
    { 
     if (e.Type == ScrollEventType.Last) 
     { 
      //scrollbar is all the way down 
     } 
     else 
     { 
      //user has scrolled up 
     } 
    } 
Cuestiones relacionadas