Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Vb.Net] Modificare un'intera riga di un RichTextBox

    Salve ragazzi come da titolo mi trovo di fronte a un problema su una richtextbox, il mio problema iniziale era che avevo un testo con delle linee il cui primo carattere era "X" quindi ho pensato di farmi un mini software per automatizzare l'eliminazione di questo carattere, perciò ho pensato di mettere nella mia form un controllo RichTextBox e un pulsante che dovrebbe fare la ricerca del primo carattere di ogni linea ed eliminarlo quindi ho scritto questo codice:
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnRemove.Click 
    'creo una stringa temporanea dove inserirò la linea della textbox 
    Dim temp As String = String.Empty 
    'setto la progressbar 
    Progress.Visible = True 
    Progress.Maximum = Testo.TextLength
    
    Dim i As Integer 
    'controllo tutto il testo della richtextbox 
    For i = 0 To Testo.Lines.Count - 1 
    'aumento la progressbar Progress.Value += i 
    'assegno alla stringa la linea i-esima 
    temp = Testo.Lines(i)
    Debug.WriteLine("temp: " + temp) 
    'se la stringa non è nulla 
    If Not String.IsNullOrEmpty(temp) Then 
    Debug.WriteLine("temp not nulla " + temp(0).ToString) 
    'se il primo carattere della stringa è X 
    If temp(0) = Chr(88) Then 
    'rimuovo dalla stringa il primo carattere 
    temp = temp.Remove(0, 1) 
    Debug.WriteLine("removed " + temp)
    'imposto la linea attuale data dall'indice i uguale alla stringa temp 
    Testo.Lines(i) = temp 
    End If 
    'svuoto la stringa 
    temp = String.Empty 
    End If 
    Next
    
    'resetto la progressbar
    Progress.Value = 0 
    Progress.Visible = False 
    Debug.WriteLine("Finito") 
    End Sub
    Il problema è che assegnando la stringa alla linea(Testo.Lines(i) = temp), suddetta linea non cambia, ho provato anche a fare un refresh della textbox ma nulla. Avete qualche consiglio da darmi?

    Grazie in anticipo

  2. #2

    info

    Non puoi fare allo stesso modo di come fai inizialmente quando hai ancora le X?

  3. #3

    Re: info

    Originariamente inviato da martini_luca
    Non puoi fare allo stesso modo di come fai inizialmente quando hai ancora le X?
    Cioè?

  4. #4
    Scusa forse non ho capito , il richtextbox e' valorizzato(1) con il testo da modificare?
    Tu lo leggi (2), lo modifichi (3)e poi lo vuoi aggiornare a video (4), giusto?

    Per scrivere il richtextbox aggiornato , non puoi fare come hai fatto nel punto 1?
    ciao L

  5. #5
    Originariamente inviato da martini_luca
    Scusa forse non ho capito , il richtextbox e' valorizzato(1) con il testo da modificare?
    Tu lo leggi (2), lo modifichi (3)e poi lo vuoi aggiornare a video (4), giusto?

    Per scrivere il richtextbox aggiornato , non puoi fare come hai fatto nel punto 1?
    ciao L
    Se ho capito quello che vuoi dire, non si può fare ed è proprio li il mio problema cioè:
    codice:
    'leggo la linea e la memorizzo in una stringa
    temp = Testo.Lines(i)
    
    'poi pensavo di poter riscrivere quella linea, dopo aver modificato la stringa:
    Testo.Lines(i) = temp
    Ma questo non è possible altrimenti sarei già riuscito perchè se guardi il codice che ho scritto è proprio così. Eppure la proprietà Lines è di tipo get/set..

  6. #6

    info

    Scusami spero di non prendere parole da te.. ma se ti rimemorizzi tutto il testo modificato chesso' in un array.. poi cancelli il textbox e lo riscrivi anche cosi' non va?

  7. #7

    Re: info

    Originariamente inviato da martini_luca
    Scusami spero di non prendere parole da te.. ma se ti rimemorizzi tutto il testo modificato chesso' in un array.. poi cancelli il textbox e lo riscrivi anche cosi' non va?
    Non è possibile farlo con un array in quanto ad esso va assegnata una dimensione alla creazione e non sapendo quanti caratteri andrò a leggere non posso adottare questa soluzione. Ci deve essere un modo per scrivere o modificare una linea spero

  8. #8
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Prova così:

    codice:
     
        Dim aLines() As String = rtb3.Lines
        Dim i As Integer = 0
    
        For i = 0 To aLines.Length - 1
            If Mid(aLines(i), 1, 1) = "c" Then
                aLines(i) = Mid(aLines(i), 2)
            End If
        Next
    
        rtb3.Lines = aLines

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.