Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: dont'Exist en 23 Diciembre 2020, 14:02 pm



Título: Capturar lo último que se ve en un textbox o RichTextBox
Publicado por: dont'Exist en 23 Diciembre 2020, 14:02 pm
Hola a todos.
Estoy trabajando en un proyecto el cual tiene 2 Caja de textos, en una existe un texto precargado y en el otro, la idea es transcribir lo que se lee en el primero. Intento hacer que cuando se llegue a tiperar lo último que se vea en donde está el texto precargado, el scroll de éste se mueva permitiendo seguir leyendo lo que sigue y continuar con la transcripción y no tener que bajar el scroll a mano.

Sería cuestión de comparar mientras escribo con lo último que se vea en el RichTextBox y si hay coincidencia entonces mover el scroll...

Se como capturar las ultimas palabras de un textbox, pero no es lo que necesito.

Espero que me haya podido hacer entender y que tambien me puedan dar una orientación para continuar con esto.

Muchas gracias


Título: Re: Capturar lo último que se ve en un textbox o RichTextBox
Publicado por: Danielㅤ en 23 Diciembre 2020, 16:08 pm
Hola, tal vez eso sea un poco complicado porque lo que vaya en la caja de textbox no siempre tendrá la misma longitud, es decir no siempre habrá la misma cantidad de palabras ni de letras, pero lo que podes hacer que es posible es guardar la longitud del texto y de ahí saber que longitud de texto ocupa todo el texto (lo que se ve en el textbox).


Saludos


Título: Re: Capturar lo último que se ve en un textbox o RichTextBox
Publicado por: ThunderCls en 23 Diciembre 2020, 16:34 pm
Se me ocurre:
1- Obtener la ultima linea de texto visible en el 1er textbox (texto a ser transcrito)
    GetLastVisibleLineIndex (https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.textbox.getlastvisiblelineindex?view=net-5.0)
    GetLineText (https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.textbox.getlinetext?view=net-5.0)
2- Verificar si dicha linea anterior esta contenida en el final del texto del 2do textbox (texto transcrito). En caso afirmativo mover el scroll del 1er textbox a la siguiente linea
    ScrollToLine (https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.textbox.scrolltoline?view=net-5.0)

No se si funcionara como necesitas, pero podrias probar algo asi
Saludos


Título: Re: Capturar lo último que se ve en un textbox o RichTextBox
Publicado por: Serapis en 23 Diciembre 2020, 18:37 pm
Necesitas mantener control del punto de inserción en el top del control a controlar.
Es decir una búsqueda por sí solo no basta, ya que un mismo texto podría aparecer más de una vez.

Tampoco te explicas suficientemente bien...
Si vas teclando lo que te parece... Volver a escribir lo que ya aprece en un texto es cansino si va a ser largo (lo que parece ser dado que precisa tener un scroll).

Yo te sugiero preferiblemente copiar/ignorar y pegar (sin necesidad de teclear).
Tiene la ventaja de que tú te remitirías a señalar si la línea (cortada hasta por ejemplo un signo de puntuación a tu elección, coma, punto, solo punto, etc...) la quieres copiar, no o solo una parte seleccionada de la misma.

En este caso, necesitarías un tercer textbox, donde copiar la línea en curso del textbox de origen, y 3 botones:
- Uno indica 'Me interesa'
...y entonces se pega la líea completa al final de ese textbox que quieres..
- Otro botón indica 'Pegar Selección'.
Pudiera ser el caso de que de una línea en concreto no te interese toda y dado que no va a adivinar en cada ocasión por donde cortar y pegar en esa tercera caja de texto... si tu quieres solo cierto contenido de la línea, entonces lo seleccionas, y con el botón, sería 'Pegar selección'... y el texto seleccionado se transfiere al final del textbox que vas editando. Puesto que podrías requerir copiar más de 1 selección... podrá hacerse cada vez una selección y pulsar dicho botón.
- El tercer  botón indica 'Leer siguiente Linea'.
Lee la siguiente línea del textbox de origen... es un bucle que acaba cuando se alcance el final del textbox de origen. Tambien s epulsaría este botón cuando de la línea actual, no te interesa nada.

...por supuesto nada impide que manualmente sigas editando en la caja de texto de destino...

Puedes darte cuenta que con este modelo, te da igual siquiera que la caja de texto de origen haga o no scroll, pués lo que necesitar ver, lo ves en esa tercera caja de texto línea a línea (cortada por signos de puntuación y/o por saltos de línea, etc... como mejor se ajuste a lo que precises).