Duda sobre seleccionar palabra por palabra en RichTextBox (vb.net)

Iniciado por Susoch, 15 Enero 2012, 18:22 PM

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

Susoch

Hola buenas.
Realizo este post porque tengo una duda que no consigo resolver por eso escribo este post para ver si vosotros podriais ayudarme:

Mi duda va sobre vb.net

Lo que quisiera saber es como podria ir seleccionando palabra por palabra dandole a un boton o con un timer, es decir, que se seleccione una palabra, y que luego se seleccione la siguiente.

Espero que puedan ayudarme, gracias y un saludo!

alexjoffre

Podrias hacer un metodo que leyera el contenido y fuera comprobando caracter por caracter. cuando llegue a un espacio, que seleccione el intervalo entre la primera letra y el caracter anterior al espacio. y asi sucesivamente

Variables que necesitara.

Dim inicio As Integer
Dim dim fin As Integer

y recorres la cadena con un FOR y seleccionas el texto con    SelectionStart  y    SelectionLength

Espero te sirva de algo. Saludos

seba123neo

Hola, aca tenes algo basico, hay que pulirlo un poco, pero la idea esta, terminalo vos.

Código (vb) [Seleccionar]
Public Class Form1

    Dim startIndex As Integer = 0
    Dim words As String()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        RichTextBox1.Text = "Autodefinida como un esfuerzo colaborativo por crear una enciclopedia gratis, libre y accesible por todos"
        words = RichTextBox1.Text.Split(New Char() {" "c, "."c, ","c, vbCr, vbLf}, StringSplitOptions.RemoveEmptyEntries)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Static i As Integer

        startIndex = RichTextBox1.Find(words(i), IIf(i = 0, 0, startIndex + 1), RichTextBox1.Text.Length, RichTextBoxFinds.WholeWord)

        If startIndex > -1 Then
            RichTextBox1.Select(startIndex, words(i).Length)
            RichTextBox1.SelectionColor = Color.White
            RichTextBox1.SelectionBackColor = Color.Blue
        End If

        i += 1
    End Sub
End Class


pone un boton y un richtextbox, al apretar el boton te va seleccionado las palabras.

saludos.

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Susoch

Cita de: seba123neo en 17 Enero 2012, 03:39 AM
Hola, aca tenes algo basico, hay que pulirlo un poco, pero la idea esta, terminalo vos.

Código (vb) [Seleccionar]
Public Class Form1

    Dim startIndex As Integer = 0
    Dim words As String()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        RichTextBox1.Text = "Autodefinida como un esfuerzo colaborativo por crear una enciclopedia gratis, libre y accesible por todos"
        words = RichTextBox1.Text.Split(New Char() {" "c, "."c, ","c, vbCr, vbLf}, StringSplitOptions.RemoveEmptyEntries)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Static i As Integer

        startIndex = RichTextBox1.Find(words(i), IIf(i = 0, 0, startIndex + 1), RichTextBox1.Text.Length, RichTextBoxFinds.WholeWord)

        If startIndex > -1 Then
            RichTextBox1.Select(startIndex, words(i).Length)
            RichTextBox1.SelectionColor = Color.White
            RichTextBox1.SelectionBackColor = Color.Blue
        End If

        i += 1
    End Sub
End Class


pone un boton y un richtextbox, al apretar el boton te va seleccionado las palabras.

saludos.


Me has servido de mucho, muchas gracias tio!
Pero esque se me va seleccionando todo poco a poco, y lo que necesito es que se seleccione la siguiente solo, palabra a palabra, no todas, espero que entiendas mi cuestión.
Gracias, un saludo!