Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: jgzunigah en 24 Febrero 2010, 05:29 AM

Título: Richtextbox en C# y VB.NET
Publicado por: jgzunigah en 24 Febrero 2010, 05:29 AM
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
Título: Re: Richtextbox en C# y VB.NET
Publicado por: Shell Root en 24 Febrero 2010, 06:13 AM
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
Título: Re: Richtextbox en C# y VB.NET
Publicado por: raul338 en 24 Febrero 2010, 13:30 PM
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 (http://foro.elhacker.net/net/ayuda_con_colores_richtextbox-t266249.0.html)

Espero que te sirva