el Guille, la Web del Visual Basic, C#, .NET y más...

El control RichTextBox de .NET 5.0 RC2 no permite buscar una cadena si esta está en más de una línea

 
Publicado el 23/Oct/2020
Actualizado el 24/Oct/2020
Autor: Guillermo 'guille' Som

Pues eso… En la documentación lo indica claramente, pero eso será algo nuevo y se ve que también afecta a las versiones anteriores, es decir, el control RichTextBox ya no es el mismo que era antes… al menos el método Find con búsqueda de cadenas ya no funciona igual. (publicado en mi blog)




 

Este contenido está obtenido de mi blog, la URL original es:
El control RichTextBox de .NET 5.0 RC2 no permite buscar una cadena si esta está en más de una línea

 
Nota aclaratoria del 28-oct-2020:

Según parece lo que la documentación indica es que no se pueden buscar textos que incluyan más de una línea, no que el texto esté en más de una línea…
Este es el texto aclaratorio que me han mandado:

For the documentation on the FIND method, it means you cannot search in multiple lines of the Text, if you want to search different lines content, you can split the lines in different substrings. Please see the post: https://stackoverflow.com/questions/54056447/richtextbox-find-multi-line-string-in-multi-line-text

La traducción (automática) de ese texto en inglés:
Para la documentación sobre el método FIND, significa que no puede buscar en varias líneas del texto, si desea buscar contenido de diferentes líneas, puede dividir las líneas en diferentes subcadenas.

A mí casi me deja igual… pero al ver el enlace y lo que el que pregunta quiere buscar, sí lo entiendo:
Es decir, en la cadena de búsqueda no puedes usar varias líneas (con retorno de carro) de ser así devolverá -1.
Pero si puedes buscar una cadena (que no tenga retornos de carro) y buscará en todas las líneas del texto del control RichTextBox.
En fin…

 

Pues eso… En la documentación lo indica claramente, pero eso será algo nuevo y se ve que también afecta a las versiones anteriores, es decir, el control RichTextBox ya no es el mismo que era antes… al menos el método Find con búsqueda de cadenas ya no funciona igual.

 

Rectificación del 24-oct-2020 por la tarde:
(donde dije digo digo Diego)

Aunque la documentación dice eso, en realidad si busca aunque esté más de una vez en varias líneas y no me refiero solo a .NET Framework 4.7.2, también lo hace en .NET 5.0 RC2.
Ayer es que estaba yo del todo grave con lo de la boca… aparte de que veo poco incluso con las gafas…
Te explico.

Estaba probando lo de Buscar texto en un programa que estoy haciendo y probé con buscar InitializeComponent, pero se ve que lo escribí mal: InitilizeComponent y al buscarlo no lo encontraba… ¡elemental querido Guille!
El no comprobar si estaba o no bien escrito es porque seleccioné el texto correcto y pulsé Ctrl+F para buscar, pero se ve que en la lista de búsqueda ya estaba la palabra mal escrita y la seleccionaría sin querer…

Y claro al probar la versión que he hecho y ver que tampoco encontraba la dichosa palabra, pues… me di cuenta que le faltaba una «a«… en fin…

 

No lo he probado aún con el .NET Framework pero creo que el problema es el mismo.

Nota del 24-oct-2020:
Acabo de probarlo en un «editor» que tengo hecho con .NET Framework 4.7.2 y va bien aunque en la documentación siga diciendo que no va.

Nota

Los Find métodos que aceptan un string como parámetro no pueden encontrar texto contenido en más de una línea de texto dentro de RichTextBox . La realización de este tipo de búsqueda devolverá un valor de uno negativo (-1).

A ver qué dicen esta gente si eso se va a quedar así o hay alguna alternativa… que debería haberla…

Lo mismo estoy equivocado, pero en una aplicación en la que estoy usándolo actualmente ya no funciona como debería funcionar… y al buscar una cadena, (sabiendo que existe en el texto) me devuelve un valor -1, que es lo que «ahora» dice la documentación que ocurrirá… pero antes no ocurría… en fin…

Esto es lo que dice la documentación:

 

Bueno… a ver qué ocurre con esto…

Mientras tanto voy a crear un método de extensión para añadir funcionalidad de buscar el mismo texto aunque esté en varias líneas, en principio lo llamaré FindString y será como Find(String, Int32, RichTextBoxFinds).
Cuando lo tenga hecho te avisaré o pondré aquí el enlace 😉

 

Nos vemos.
Guillermo



 


La fecha/hora en el servidor es: 09/12/2024 21:47:56

La fecha actual GMT (UTC) es: 

©Guillermo 'guille' Som, 1996-2024