Selezione di righe di testo in RichTextBox

di il
1 risposte

Selezione di righe di testo in RichTextBox

Sono tornato ad occuparmi di vb.net dopo molto tempo e la ruggine si fa sentire, questo è il mio problema:

Carico un file txt in un RichTextBox e vorrei selezionare le prime 5 righe come faccio con il mouse per spostarle in una nuova posizione.

Questo è il poco codice che sono riuscito a produrre e che non risolve il problema ma mi trova una sola riga e neanche selezionata.

Spero in un aiuto da parte vostra      Grazie

    Private Sub SelezSettori_Click(sender As Object, e As EventArgs) Handles SelezSettori.Click
       Dim righeSelezionate As New List(Of String)
       Dim righeTotali() As String = IO.File.ReadAllLines("C:/Pesca/Gare Lago 20/SettoriGara3.txt")
       For Each riga As String In righeTotali
           If riga.Contains("1") Then
               righeSelezionate.Add(riga)
           End If
       Next
       For x = 0 To righeSelezionate.Count - 1
           RichTextBox1.Text = righeSelezionate(x) & vbCrLf
       Next
   End Sub

1 Risposte

  • Re: Selezione di righe di testo in RichTextBox

    25/11/2025 - Hank Voight ha scritto:

    mi trova una sola riga e neanche selezionata.

    Che non sia selezionata, ovvero che non contenga "1", è impossibile.

    Ne vedi una soltanto perché in realtà sovrascrivi in continuazione la proprietà Text invece di concatenarla. Diciamo che, per quanto ne so io, l'approccio corretto in questo caso sarebbe usare uno StringBuilder.

        Private Sub SelezSettori_Click(sender As Object, e As EventArgs) Handles SelezSettori.Click
           Dim righeTotali() As String = IO.File.ReadAllLines("C:/Pesca/Gare Lago 20/SettoriGara3.txt")
           Dim sb as New StringBuilder()
           For Each riga As String In righeTotali
               If riga.Contains("1") Then
                   sb.AppendLine(riga)
               End If
           Next
    
           
           RichTextBox1.Text = sb.ToString()
    
       End Sub

    Le stringhe concatenate in .NET mangiano memoria a pacchi e ci sono tutta una serie di classi per gestirle in modo efficiente. Se addirittura hai una stima di quello che potrebbe essere la lunghezza in caratteri del risultato minimo, potresti usare il costruttore che accetta la Capacity e rispamiare un pochetto di CPU a valle.

Devi accedere o registrarti per scrivere nel forum
1 risposte