Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278

    [vb.net]selezione automatica tramite button

    Ho cercato di creare un programma che attraverso un button....selezionasse da solo una parola in una textbox una volta piazzato il cursore, così ho realizzato questo:
    codice:
    Dim i As Integer
            i = 0
            For i = 0 To RichTextBox1.Text = ""
                i = i + 1
    
            Next
            TextBox1.Text = i
            RichTextBox1.SelectionStart = RichTextBox1.GetFirstCharIndexOfCurrentLine
            RichTextBox1.SelectionLength = i
            RichTextBox2.Text = RichTextBox1.SelectedText
    End sub
    ma ha due problemi...bhè il primo che non funziona....non dà errori però non va....non si ferma appena non trova lettere.
    ed il secondo è che la i vale sempre minimo 2 e se al posto della i metto 4 la i varrà 6 se metto 5 varrà 7 e così via....e non capisco perchè.

    Io vorrei che selezionasse tutte le lettere consecutive anche se vanno a capo fin quando non trova il primo spazio bianco davanti a se (per capirci se la parola è divisa da un a capo, deve continuare a selezionare....solo se c'è lo spazio deve fermarsi, e lo spazio non deve selezionarlo).

  2. #2

    Re: [vb.net]selezione automatica tramite button

    Originariamente inviato da stejano
    codice:
            For i = 0 To RichTextBox1.Text = ""
                i = i + 1
            Next
    VVoVe: E tu speri anche che funzioni? VVoVe: Mi spieghi che senso ha questo codice?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    sì effettivamente è un po' un obrobrio...tuttavia ho fatto diverse prove con diversi codici....ma qual'è il procedimento giusto?quello è uno dei tentativi fatti ...

  4. #4
    Originariamente inviato da stejano
    sì effettivamente è un po' un obrobrio...
    Non è faccenda di obbrobrio... è che proprio non ha senso!
    Questa linea
    codice:
    For i = 0 To RichTextBox1.Text = ""
    è equivalente a
    codice:
    For i = 0 To -1
    se RichTextBox1.Text è uguale a "" e a
    codice:
    For i = 0 To 0
    se invece non lo è; questo perché l'espressione RichTextBox1.Text = "" restituisce True (ossia, convertito in Integer, -1) o False (ossia 0). A questo punto ti risulterà evidente come mai i viene sempre incrementato di 2.
    tuttavia ho fatto diverse prove con diversi codici....ma qual'è il procedimento giusto?quello è uno dei tentativi fatti ...
    codice:
    RichTextBox1.SelectionStart = RichTextBox1.GetFirstCharIndexOfCurrentLine()
    RichTextBox1.SelectionLength = RichTextBox1.Text.IndexOf(" "c,RichTextBox1.SelectionStart)-RichTextBox1.SelectionStart
    RichTextBox2.Text = RichTextBox1.SelectedText
    ---EDIT---
    O, anche meglio:
    codice:
    RichTextBox1.SelectionStart = RichTextBox1.GetFirstCharIndexOfCurrentLine()
    Dim i As Integer = RichTextBox1.SelectionStart
    Do
        i += 1
    While Char.IsLetterOrDigit(RichTextBox1.Text.Chars(i))
    RichTextBox1.SelectionLength = i - RichTextBox1.SelectionStart
    RichTextBox2.Text = RichTextBox1.SelectedText
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    278
    ho provato i codici da te postati...ma non va nessuno dei due....

    il primo dà questo errore:

    InvalidArgument=Valore di '-1' non valido per 'SelectionLength'.
    Nome parametro: SelectionLength


    il secondo l'ho messo giù così, ma dovrebbe essere uguale:

    codice:
    Dim i As Integer
    
            i = RichTextBox1.SelectionStart
            Do While Char.IsLetterOrDigit(RichTextBox1.Text.Chars(i))
    
    
                i = i + 1
            Loop
    
            'TextBox1.Text = i
            RichTextBox1.SelectionStart = RichTextBox1.GetFirstCharIndexOfCurrentLine()
            RichTextBox1.SelectionLength = i - RichTextBox1.SelectionStart
            RichTextBox2.Text = RichTextBox1.SelectedText
    e mi da indice oltre i limiti della matrice....

    cosa ne pensate?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.