Richtextbox en C# y VB.NET

Iniciado por jgzunigah, 24 Febrero 2010, 05:29 AM

0 Miembros y 1 Visitante están viendo este tema.

jgzunigah

Hola resulta que tengo que hacer un efecto que se seleccione una palabra y le cambie de color, utilice la propiedad find y selectColor pero sitengo varias palabras que quiero cambiar como "Create " solo me cambia la primera y las demas no.

les agradeceria me ayudaran ya que no se como hacer, le pego una copia del codigo para que vean si es un error mio u otra cosa. A por cierto esta en VB.NET

gracias de antemano

Private Sub analisisLexicoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles analisisLexicoToolStripMenuItem.Click
        'realiza la busqueda de las palabras y les cambia de color segun su categoria
        Dim Lineas() As String 'Almacena el valor de la linea de texto
        Dim Vec_PalabrasEvaluar() As String 'Almacena palabra por palabra por medio de la funcion split

        Lineas = rtbTexto.Lines


        For a As Integer = 0 To UBound(Lineas)
            Vec_PalabrasEvaluar = Split(Lineas(a), " ")
            For b As Integer = 0 To straux.Count - 1
                For c As Integer = 0 To UBound(Vec_PalabrasEvaluar)
                    If Vec_PalabrasEvaluar(c) = straux(b) Then
                        'MessageBox.Show(Vec_PalabrasEvaluar(c), "si", MessageBoxButtons.OK)
                        CambiaColor(straux(b))
                    End If
                Next
            Next
        Next



    End Sub

  Public Sub CambiaColor(ByVal vec As String)
        Dim wordToFind As String = vec

        If rtbTexto.TextLength > 0 Then
            'rtbTexto.Find(wordToFind, rtbTexto.SelectionStart, rtbTexto.SelectionLength, RichTextBoxFinds.WholeWord Or RichTextBoxFinds.MatchCase)
            'se hace el cambio de color
            Dim indexToText As Integer = rtbTexto.Find(wordToFind, RichTextBoxFinds.MatchCase Or RichTextBoxFinds.WholeWord)

            rtbTexto.Select(indexToText, wordToFind.Length)
            rtbTexto.SelectionColor = Color.Blue
        End If
    End Sub

Shell Root

Código (vbnet) [Seleccionar]
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

Fuente: :http://www.recursosvisualbasic.com.ar/htm/vb-net/9-richtextobx-highlight-color-en-vb-net.htm
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

raul338

Wow.... hace tiempo hubo un tema asi en el que participamos muchos :P y en ese momento nunca se me hubieran ocurrido usar expresiones regulares ;-) en cuanto a lo demas, es parecido al que hicimos :xD

El tema esta aca Ayuda con colores Richtextbox

Espero que te sirva