Ir a Una Línea Richtextbox

08/05/2006 - 16:54 por Ivan Pequeño | Informe spam
Estimados Foristas

Estando en Vb.net 2002

Mi RichTextBox se llena desde un archivo, con 200 líneas.
Hasta aqui cero problema.

Pero yo efectuo una verificación del texto
(es una verificación de sintaxis de código Cobol)

Tengo 15 lineas visibles y detecto un error en la
linea 30.

Me pasé hartas horas del week-end, intentando hacer que la línea
que contiene el error aparezca al centro del RichTextBox sin poder
Lograrlo.
No sé si me leí TODA LA DOCUMENTACION, pero creo que no anduve lejos

¿Alguien tiene una idéa?

Agradeciendo de antemano

Preguntas similare

Leer las respuestas

#1 Leonardo Azpurua [mvp vb]
10/05/2006 - 17:07 | Informe spam
"Ivan Pequeño" escribió en el mensaje
news:
Pero yo efectuo una verificación del texto
(es una verificación de sintaxis de código Cobol)

Tengo 15 lineas visibles y detecto un error en la
linea 30.

Me pasé hartas horas del week-end, intentando hacer que la línea
que contiene el error aparezca al centro del RichTextBox sin poder
Lograrlo.
No sé si me leí TODA LA DOCUMENTACION, pero creo que no anduve lejos

¿Alguien tiene una idéa?



Hola, Ivan:

Tengo instalado VS 2003, de manera que no se si te sirva para la version
anterior.

Tanto en esta version de VB.NET como en VB6 se produce automaticamente un
scroll para hacer el texto visible cuando le asignas a la propiedad SelStart
un valor que cae fuera del rango visible y el control tiene el foco.

El metodo GetLineFromCharIndex debe ayudarte a ubicar la linea en cuestion.

GetCharIndexFromPosition(New Point(0, 0)) te devuelve el indice del primer
caracter visible arriba a la izquierda.

GetLineFromCharIndex(GetCharIndexFromPosition(New Point(0, 0))) te devuelve
el indice de la primera linea visible.

De ahi en adelante es tan sencillo como ubicar un caracter en la linea
"ofensiva" (si el texto es muy largo puedes hacer una busqueda binaria hasta
encontrar un caracter para el que GetLineFromCharIndex te devuelva el numero
de la linea deseada). Digamos que este caracter se almacena en una variable
<Pos>. Luego puedes usar GetCharIndexFromPosition para determinar si el
texto esta por encima [Pos < GetCharIndexFromPosition(New Point(0, 0))] o
por debajo [Pos > GetCharIndexFromPosition(New Point(RTB.Width,
RTB.Height))].

El metodo ScrollToCaret te garantiza que si el cursor esta antes de la
primera linea visible, la linea que lo contiene sera la primera, y si esta
por debajo de la ultima, la linea que lo contiene será la ultima. Puedes
usarlo para asegurarte de que la linea que quieres resaltar quede en el
centro exacto del control

Claro que todo depende de que VB2002 se comporte de la manera descrita.

Salud!
Respuesta Responder a este mensaje
#2 Ivan Pequeño
10/05/2006 - 17:30 | Informe spam
Leonardo,
Un millón de Gracias por tu completísima explicación
Este programa estaba escrito en Vb 6.0 y es mi primera incursión en Vb.Net.
Me ayudaste alguna vez en los foros de Vb 6.0 y ahora aqui en .Net
Quiero agradecer a ti y a todos los foristas por la ayuda generosa que
brindan y decirles que sin ésta me habría sido casi imposible llegar a mi fin
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida