lunes, 12 de abril de 2010

Highlight color en RichTextBox

Proyecto en vb.net creado por frederick Volking , que permite cargar un archivo .rtf en un RichTextBox y colorear el fondo de las palabras o frases para resaltarlas

Tiene una serie de métodos y propiedades para :

colorear la frase seleccionada en el control
recorrer todo el contenido del texto cargado y buscar las frases para resaltarlas
otro método para borrar todos los resaltes de color aplicados.

Para el ejemplo se debe añadir un nuevo windows Form, incluir la clase System.Text.RegularExpressions, un control TextBox y un control richTextBox y un Button1

Código fuente

Texto planoCopiar código fuenteImprimir
Option Explicit On
Option Strict On

Imports System.Text.RegularExpressions

Public Class Form1

Private Sub Buscar_Coincidencia(ByVal pattern As String, _
ByVal RichTextBox As RichTextBox,ByVal cColor As Color, _
ByVal BackColor As Color)

Dim Resultados As MatchCollection
Dim Palabra As Match

Try
' PAsar el pattern e indicar que ignore las mayúsculas y minúsculas al mosmento de buscar
Dim obj_Expresion As New Regex(pattern.ToString, RegexOptions.IgnoreCase)

' Ejecutar el método Matches para buscar la cadena en el texto del control
' y retornar un MatchCollection con los resultados
Resultados = obj_Expresion.Matches(RichTextBox.Text)

' quitar el coloreado anterior
With RichTextBox
.SelectAll()
.SelectionColor = Color.Black
End With

' Si se encontraron coincidencias recorre las colección
For Each Palabra In Resultados
With RichTextBox
.SelectionStart = Palabra.Index ' comienzo de la selección
.SelectionLength = Palabra.Length ' longitud de la cadena a seleccionar
.SelectionColor = cColor ' color de la selección
.SelectionBackColor = BackColor
Debug.Print(Palabra.Value)
End With
Next Palabra

Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' pasar el pattern, el Richtext, y los colores para el resalte
Buscar_Coincidencia(TextBox1.Text, RichTextBox1, Color.Blue, Color.Yellow)

End Sub
End Class

No hay comentarios:

Publicar un comentario