Oppure

Loading
20/05/20 9:07
aragorn76
Eccomi son tornato... alla fine ho cambiato metodo perchè con le doppie \ mi segnava come hyperlink (e quindi cliccabile) ma nel metterlo in un db mysql e poi riprendere la stringa, mi faceva diventare tutto come un unico link... quindi ho ovviato con il colore, sfruttando la tua idea e trovando uno script carino :)



 ' preparazione form di input
                ' meglio fare in progettazione complesso quanto vuoi
                Formdentro.Text = "Inserisci"
                Formdentro.Size = New Size(200, 180)
                Formdentro.ControlBox = False
                Formdentro.Location = New Point(20000, 15000)

                ' preparazione text su form di input
                TextInput.Location = New Point(10, 10)
                TextInput.Size = New Point(150, 20)
                TextInput.CharacterCasing = CharacterCasing.Upper
                Formdentro.Controls.Add(TextInput)

                ' preparazione button su form di input
                Inserisci.Text = "Inserisci"
                Inserisci.Location = New Point(100, 80)
                Inserisci.TabIndex = 3
                Formdentro.Controls.Add(Inserisci)
                AddHandler Inserisci.Click, AddressOf Inserisci_OnClick ' permette di avere l'evento click

                ' preparazione button su form di input
                Annulla.Text = "Annulla"
                Annulla.Location = New Point(100, 110)
                Annulla.TabIndex = 3
                Formdentro.Controls.Add(Annulla)
                AddHandler Annulla.Click, AddressOf Annulla_OnClick ' permette di annullare


                ' preparazione radiobutton su form di input
                For i = 0 To 1
                    Scelta(i) = New RadioButton
                    Scelta(i).Location = New Point(10, 24 * i + 40)
                    Formdentro.Controls.Add(Scelta(i))
                Next
                Scelta(0).Checked = True
                Scelta(0).Text = "Nome "
                Scelta(0).TabIndex = 1
                Scelta(1).Text = "Cognome "
                Scelta(1).TabIndex = 2


Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
 
        If pos1 > RichTextBox1.TextLength Then pos1 = RichTextBox1.TextLength
        Dim pos As Integer = RichTextBox1.Text.IndexOf("<", pos1)
        If pos <> -1 Then pos1 = pos + 2 : FormInput.Show()
 
    End Sub


 Private Sub Inserisci_OnClick(sender As Object, e As EventArgs)
            If Scelta(0).Checked = True Then
                RichTextBox1.Text = RichTextBox1.Text & TextInput.Text & "> "
            Else
                RichTextBox1.Text = RichTextBox1.Text & TextInput.Text & "| "
            End If
            TextInput.Text = ""
            Formdentro.Hide()
            RichTextBox1.Focus()

            '\\\\\\\\\\\\\\\\
            'codice per il colore
            Dim SearchTerm As String = "<"
            Dim ResultIndex As Integer = Nothing
            Dim SearchStartIndex As Integer = 0
            'Loop until the searchword is not found in the RichTextBox
            Do Until ResultIndex = -1
                'Progressive search (search from the end of the last result)
                ResultIndex = RichTextBox1.Text.IndexOf(SearchTerm, SearchStartIndex)
                'If the searchstring was not found then cancel the routine
                If ResultIndex = -1 Then Exit Do

                'Get the line the matched string occurs on (narrows things down a bit)
                Dim ResultLine As Integer = RichTextBox1.GetLineFromCharIndex(ResultIndex)
                Dim ResultLineStart As Integer = RichTextBox1.GetFirstCharIndexFromLine(ResultLine)
                Dim GetWordStart As Integer = ResultLineStart

                'Loop backwards from the Index where the match begins to the beginning of the line
                For i As Integer = ResultIndex To ResultLineStart Step -1
                    'Record the position following a space (" ").
                    If RichTextBox1.Text.Chars(i) = " " Then
                        GetWordStart = i + 1
                        Exit For
                    End If
                Next i
                'Loop through and find the end of the current Word (index before the next space in the line)
                Dim GetWordEnd As Integer = RichTextBox1.TextLength - 1
                For i As Integer = ResultIndex To GetWordEnd
                    If RichTextBox1.Text.Chars(i) = " " Then
                        GetWordEnd = i
                        Exit For
                    End If
                Next

                'This is the Full 'word' that contains the searchstring
                Dim GetFullWord As String = RichTextBox1.Text.Substring(GetWordStart, GetWordEnd - GetWordStart).Trim
                'If it starts with a link syntax then select and highlight the text
                If GetFullWord.EndsWith(">") Then
                    RichTextBox1.Select(GetWordStart, GetWordEnd - GetWordStart)
                    RichTextBox1.SelectionColor = Color.LightBlue
                    RichTextBox1.Select(RichTextBox1.TextLength, 0)
                End If
                If GetFullWord.EndsWith("|") Then
                    RichTextBox1.Select(GetWordStart, GetWordEnd - GetWordStart)
                    RichTextBox1.SelectionColor = Color.LightCoral
                    RichTextBox1.Select(RichTextBox1.TextLength, 0)
                End If

                'Update the start index for the search to begin from on the next pass, or cancel further searches if we are at the end of the string
                If GetWordEnd = RichTextBox1.TextLength - 1 Then Exit Do Else SearchStartIndex = ResultIndex + 1
            Loop
        End Sub

cosi facendo, appena si digita < nella richtextbox si apre il form e in base alla scelta, fa terminare la parola con altro segno che viene riconosciuto e poi vi è il controllo il ciclo do until, loop che colora... tutto funziona.. cosi facendo i nomi risultano blu e cognomi rossi.. poi mi prendo i valori pulendo la richtextbox dai caratteri < > e |.....

adesso il poblema è... se tali nomi li ho inseriti in una tabella e quando riprendo i valori mi accorgo che un nome è sbagliato.. vorrei cliccarci sopra per modificarlo.. ma non so se possibile cliccare su una parola colorata e in base al colore prendere il valore, in modo che poi lo modifico anche nella tabella nomi... adesso vedo ma se avete idee o metodo che potrei usare, li accetto volentieri :)
Ultima modifica effettuata da aragorn76 20/05/20 9:08
aaa
20/05/20 17:44
Carlo
Postato originariamente da aragorn76:
adesso il poblema è... se tali nomi li ho inseriti in una tabella e quando riprendo i valori mi accorgo che un nome è sbagliato.. vorrei cliccarci sopra per modificarlo.. ma non so se possibile cliccare su una parola colorata e in base al colore prendere il valore, in modo che poi lo modifico anche nella tabella nomi... adesso vedo ma se avete idee o metodo che potrei usare, li accetto volentieri :)

Come li visualizzi i valori, ricaricando la solita RichTextBox? (si può fare ma ti complichi la vita)
Potresti invece fare un semplice FormEDIT attivabile con un button, carichi la tabella e dopo ricerca, visualizzi il nome o cognome sbagliato, con possibilità di correzione.
Puoi usare anche il doppio click sulla RichTextBox, che seleziona la parola, e automatizzare l'apertura del FormEdit

puoi usare DoubleClick o SelectionChanged, vedi quello che ti piace di più:

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        RichTextBox1.Text = "Testo di esempio doppio click su qualsiasi parola"
    End Sub

    Private Sub RichTextBox1_DoubleClick(sender As Object, e As EventArgs) Handles RichTextBox1.DoubleClick
        Me.Text = RichTextBox1.SelectedText
        'FormEdit.Show()
    End Sub

    'Private Sub RichTextBox1_SelectionChanged(sender As Object, e As EventArgs) Handles RichTextBox1.SelectionChanged
    '    Me.Text = RichTextBox1.SelectedText
    'End Sub

End Class

Ho visto la routine per colorare, forse è un po' eccessiva per i tuoi scopi, prova così poi scegli:
Private Sub Inserisci_OnClick(sender As Object, e As EventArgs)

        If Scelta(0).Checked = True Then
            RichTextBox1.AppendText(TextInput.Text & "> ")
            RichTextBox1.Find(TextInput.Text, RichTextBoxFinds.Reverse)
            RichTextBox1.SelectionColor = Color.LightBlue
        Else
            RichTextBox1.AppendText(TextInput.Text & "| ")
            RichTextBox1.Find(TextInput.Text, RichTextBoxFinds.Reverse)
            RichTextBox1.SelectionColor = Color.LightCoral
        End If
        RichTextBox1.Focus()
        RichTextBox1.Select(RichTextBox1.TextLength, 0)
        TextInput.Text = ""
        TextInput.Focus()
        Formdentro.Hide()

End Sub
Ultima modifica effettuata da Carlo 20/05/20 20:25
in programmazione tutto è permesso
21/05/20 15:37
aragorn76
Provata la tua routine per colorare ed è perfetta.. infatti adesso la sto usando per l'insert... ma tengo pure la funzione colora perche ogni volta che salvo i dati della richtextbox1. li metto in una tabella mysql.. che poi è ripresa da un datagridview1.. se clicco due volte sul datagridview mi riprende i valori e poi apre la funzione colora (dato che non ho piu il valore di TextInput) che mi ricolora tutta la richtextbox1.

Avevo pensato al doppio click sulla parola, ma devo verificare che la parola su cui faccio doppio click deve essere intanto non di colore bianca e qua ci siamo, ma se vi è un nome <Marco Antonio> scritto blu.. mi riporta solo una parte.. solo dove faccio il doppio click..


 Private Sub RichTextBox1_DoubleClick(sender As Object, e As EventArgs) Handles RichTextBox1.DoubleClick
            If RichTextBox1.SelectionColor <> Color.White Then
                FormInput.TextBox1.Text = RichTextBox1.SelectedText
                FormInput.Show()
             End If
 End Sub

Come posso risolvere? che so, ho pensato.. e se lo rendo di colore blu il doppio nome e in piu lo sottolineo? e poi dovrei prendere tutto quello sottolineato fino ad arrivare ad uno spazio " " senza il sottolineato.... oppure di selezionare tutto quello che vi è tra < e >.. ma come?
aaa
21/05/20 20:13
Carlo
EDIT Aggiunti commenti e Trim(TextInput.Text)

Public Class Form1
    Dim Formdentro As New Form
    Dim TextInput As New TextBox
    Dim Inserisci As New Button
    Dim Annulla As New Button
    Dim Scelta(1) As RadioButton
    Dim Correggi As Boolean = False

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' *************************************************************************************
        ' *                                                                                   *
        ' *  Colorazione parti di testo in RichTextBox in campi definiti                      *
        ' *                                                                                   *
        ' *  Il carattere "<" attiva l'inserimento                                            *
        ' *  dopo l'inserimento si crea un campo delimitato <NOME> oppure <COGNOME|           *
        ' *                                                                                   *
        ' *  la routine ColoraRTB() colora i campi con i colori scelti                        *
        ' *                                                                                   *
        ' *  il doppio click in un campo attiva la routine di correzione                      *
        ' *                                                                                   *
        ' *  se nel campo ci sono spazi il doppio click deve essere fatto sulla prima parola  *
        ' *  il campo non deve iniziare con uno spazio                                        *
        ' *                                                                                   *
        ' *  il form deve contenere una RichTextBox1                                          *
        ' *                                                                                   *
        ' *************************************************************************************

        ' preparazione form di input
        Formdentro.Text = "Inserisci"
        Formdentro.Size = New Size(200, 180)
        Formdentro.ControlBox = False
        Formdentro.Location = New Point(20000, 15000)

        ' preparazione text su form di input
        TextInput.Location = New Point(10, 10)
        TextInput.Size = New Point(150, 20)
        TextInput.CharacterCasing = CharacterCasing.Upper
        Formdentro.Controls.Add(TextInput)

        ' preparazione button su form di input
        Inserisci.Text = "Inserisci"
        Inserisci.Location = New Point(100, 80)
        Inserisci.TabIndex = 3
        Formdentro.Controls.Add(Inserisci)
        AddHandler Inserisci.Click, AddressOf Inserisci_OnClick ' permette di avere l'evento click

        ' preparazione button su form di input
        Annulla.Text = "Annulla"
        Annulla.Location = New Point(100, 110)
        Annulla.TabIndex = 4
        Formdentro.Controls.Add(Annulla)
        AddHandler Annulla.Click, AddressOf Annulla_OnClick ' permette di annullare

        ' preparazione radiobutton su form di input
        For i = 0 To 1
            Scelta(i) = New RadioButton
            Scelta(i).Location = New Point(10, 24 * i + 40)
            Formdentro.Controls.Add(Scelta(i))
        Next
        Scelta(0).Checked = True
        Scelta(0).Text = "Nome "
        Scelta(0).TabIndex = 1
        Scelta(1).Text = "Cognome "
        Scelta(1).TabIndex = 2
    End Sub

    Private Sub RichTextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles RichTextBox1.KeyDown
        ' il tasto "<" attiva l'inserimento
        If e.KeyCode = Keys.Oem102 And e.Shift = False Then
            Formdentro.Show() : Correggi = False
        End If
        ' il tasto Alt forza la colorazione dei campi
        If e.Alt Then ColoraRTB() : RichTextBox1.Select(TextInput.TextLength, 0)
    End Sub

    Private Sub Inserisci_OnClick(sender As Object, e As EventArgs)
        Dim NuovoCampo As String = Trim(TextInput.Text)
        Dim FineSel As Integer = RichTextBox1.SelectionStart + NuovoCampo.Length
        If Correggi Then ' corregge il campo nella RichTextBox
            If Scelta(0).Checked Then
                RichTextBox1.SelectedText = NuovoCampo
                RichTextBox1.Select(FineSel, 1)
                RichTextBox1.SelectedText = ">"
            Else
                RichTextBox1.SelectedText = NuovoCampo
                RichTextBox1.Select(FineSel, 1)
                RichTextBox1.SelectedText = "|"
            End If
            Inserisci.Text = "Inserisci"
        Else ' inserisce un nuovo campo nella RichTextBox
            If Scelta(0).Checked Then
                RichTextBox1.Text = RichTextBox1.Text.Insert(RichTextBox1.SelectionStart, NuovoCampo & "> ")
            Else
                RichTextBox1.Text = RichTextBox1.Text.Insert(RichTextBox1.SelectionStart, NuovoCampo & "| ")
            End If
        End If
        ColoraRTB()
        RichTextBox1.Select(FineSel + 2, 0)
        TextInput.Text = ""
        TextInput.Focus()
        Formdentro.Hide()
        ' aggiungere routine per eventuale inserimento testo in database
    End Sub

    Private Sub RichTextBox1_DoubleClick(sender As Object, e As EventArgs) Handles RichTextBox1.DoubleClick
        Dim InizioSel As Integer = RichTextBox1.SelectionStart - 1
        If InizioSel < 0 Then Exit Sub
        If RichTextBox1.Text.Substring(InizioSel, 1) = "<" Then
            ' trovo la fine del campo
            Dim FineSelNome = RichTextBox1.Text.IndexOf(">", InizioSel)
            Dim FineSelCognome = RichTextBox1.Text.IndexOf("|", InizioSel)
            Dim FineSel As Integer = 0
            If FineSelCognome < FineSelNome Then
                FineSel = FineSelCognome
                Scelta(1).Checked = True
            Else
                Scelta(0).Checked = True
                FineSel = FineSelNome
            End If
            ' se uno dei caratteri ">" "|" non è stato trovato
            If FineSelNome = -1 Then
                FineSel = FineSelCognome
                Scelta(1).Checked = True
            ElseIf FineSelCognome = -1 Then
                Scelta(0).Checked = True
                FineSel = FineSelNome
            End If
            RichTextBox1.Select(InizioSel + 1, FineSel - InizioSel - 1)
            TextInput.Text = RichTextBox1.SelectedText
            TextInput.Select(TextInput.TextLength, 0)
            Inserisci.Text = "Correggi"
            Correggi = True
            Formdentro.Show()
        End If
    End Sub

    Private Sub Annulla_OnClick(sender As Object, e As EventArgs)
        Formdentro.Hide()
        Inserisci.Text = "Inserisci"
        TextInput.Text = ""
        RichTextBox1.Select(RichTextBox1.TextLength, 0)
    End Sub

    Private Sub ColoraRTB()
        Dim PosSegnaposti As New List(Of Tuple(Of Integer, Color))
        Dim Colore As Color
        Dim pos1 As Integer
        Dim pos As Integer
        Dim simb() As Char = {"<"c, ">"c, "|"c}
        ' ricerca di tutti i segnaposto e memorizzazione delle posizioni
        Do
            pos = RichTextBox1.Find(simb, pos1)
            If pos > -1 Then
                pos1 = pos + 1
                ' associazione segnaposto, colore
                If RichTextBox1.Text.Substring(pos, 1) = "<" Then Colore = Color.Black
                If RichTextBox1.Text.Substring(pos, 1) = ">" Then Colore = Color.Turquoise
                If RichTextBox1.Text.Substring(pos, 1) = "|" Then Colore = Color.OrangeRed
                PosSegnaposti.Add(tuple.Create(pos, Colore))
            End If
        Loop Until pos = -1
        ' segnaposto insufficienti o dispari
        If PosSegnaposti.Count < 2 Or PosSegnaposti.Count Mod 2 <> 0 Then Exit Sub
        ' ordinamento crescente delle posizioni trovate
        PosSegnaposti = PosSegnaposti.OrderBy(Function(i) i.Item1).ToList
        ' colorazione tra due segnaposto  <MARCO ANTONIO> oppure <DE LUCA|
        For i = 0 To PosSegnaposti.Count - 1 Step 2
            RichTextBox1.Select(PosSegnaposti(i).Item1 + 1, PosSegnaposti(i + 1).Item1 - 1)
            RichTextBox1.SelectionColor = PosSegnaposti(i + 1).Item2
            RichTextBox1.Select(PosSegnaposti(i + 1).Item1, RichTextBox1.TextLength)
            RichTextBox1.SelectionColor = Color.Black
        Next
    End Sub
End Class
Ultima modifica effettuata da Carlo 22/05/20 15:05
in programmazione tutto è permesso
22/05/20 11:40
aragorn76
Per i nomi composti, il codice deve essere ampliato un po', al doppio click va trovato il successivo carattere ">" o "|" ed estendere la selezione.
Intanto puoi provare questo esempio, puoi correggere sia il testo che la tipologia, se hai inserito un nome, ma invece era un cognome, lo clicchi due volte, scegli cognome e fai correggi. :asd:
Puoi fare tutto quello che vuoi nella RichTextBox, inclusa la gestione dei nomi composti, se il nome è composto per la correzione va cliccato il primo nome.
Se prima del nome o del cognome c'è uno spazio al doppio click la routine di correzione non si attiva perchè controlla se il 1° carattere prima della selezione è "<"

Se è un problema dovrai inserire ulteriori controlli...:k:
Ho visto che la gestione combinata dei segnaposto e dei colori, introduce molte variabili, siccome tutto è partito dalle mie risposte ti riposto tutto il programma che:
per attivare formdentro usa l'evento keydown e colora tutto alla fine.
Per forzare la colorazione basta premere Alt
Con queste modifiche puoi modificare il testo e introdurre nuovi nomi in posizioni diverse dalla fine.
L'ho scritto di getto può essere ottimizzato...:k:


Public Class Form1
    Dim pos1 As Integer = 0
    Dim Formdentro As New Form
    Dim TextInput As New TextBox
    Dim Inserisci As New Button
    Dim Annulla As New Button
    Dim Scelta(1) As RadioButton
    Dim Correggi As Boolean = False

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' preparazione form di input
        ' meglio fare in progettazione complesso quanto vuoi
        Formdentro.Text = &amp;amp;amp;amp;amp;quot;Inserisci&amp;amp;amp;amp;amp;quot;
        Formdentro.Size = New Size(200, 180)
        Formdentro.ControlBox = False
        Formdentro.Location = New Point(20000, 15000)

        ' preparazione text su form di input
        TextInput.Location = New Point(10, 10)
        TextInput.Size = New Point(150, 20)
        TextInput.CharacterCasing = CharacterCasing.Upper
        Formdentro.Controls.Add(TextInput)

        ' preparazione button su form di input
        Inserisci.Text = &amp;amp;amp;amp;amp;quot;Inserisci&amp;amp;amp;amp;amp;quot;
        Inserisci.Location = New Point(100, 80)
        Inserisci.TabIndex = 3
        Formdentro.Controls.Add(Inserisci)
        AddHandler Inserisci.Click, AddressOf Inserisci_OnClick ' permette di avere l'evento click

        ' preparazione button su form di input
        Annulla.Text = &amp;amp;amp;amp;amp;quot;Annulla&amp;amp;amp;amp;amp;quot;
        Annulla.Location = New Point(100, 110)
        Annulla.TabIndex = 4
        Formdentro.Controls.Add(Annulla)
        AddHandler Annulla.Click, AddressOf Annulla_OnClick ' permette di annullare

        ' preparazione radiobutton su form di input
        For i = 0 To 1
            Scelta(i) = New RadioButton
            Scelta(i).Location = New Point(10, 24 * i + 40)
            Formdentro.Controls.Add(Scelta(i))
        Next
        Scelta(0).Checked = True
        Scelta(0).Text = &amp;amp;amp;amp;amp;quot;Nome &amp;amp;amp;amp;amp;quot;
        Scelta(0).TabIndex = 1
        Scelta(1).Text = &amp;amp;amp;amp;amp;quot;Cognome &amp;amp;amp;amp;amp;quot;
        Scelta(1).TabIndex = 2
    End Sub

    Private Sub RichTextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles RichTextBox1.KeyDown
        If e.KeyCode = Keys.Oem102 And e.Shift = False Then
            Formdentro.Show() : Correggi = False
        End If
        If e.Alt Then ColoraRTB() : RichTextBox1.Select(TextInput.TextLength, 0)
    End Sub

    Private Sub Inserisci_OnClick(sender As Object, e As EventArgs)
        Dim FineSel As Integer = RichTextBox1.SelectionStart + TextInput.TextLength
        If Correggi Then
            If Scelta(0).Checked Then
                RichTextBox1.SelectedText = TextInput.Text
                RichTextBox1.Select(FineSel, 1)
                RichTextBox1.SelectedText = &amp;amp;amp;amp;amp;quot;>&amp;amp;amp;amp;amp;quot;
            Else
                RichTextBox1.SelectedText = TextInput.Text
                RichTextBox1.Select(FineSel, 1)
                RichTextBox1.SelectedText = &amp;amp;amp;amp;amp;quot;|&amp;amp;amp;amp;amp;quot;
            End If
            Inserisci.Text = &amp;amp;amp;amp;amp;quot;Inserisci&amp;amp;amp;amp;amp;quot;
        Else
            If Scelta(0).Checked Then
                RichTextBox1.Text = RichTextBox1.Text.Insert(RichTextBox1.SelectionStart, TextInput.Text &amp;amp;amp;amp;amp;amp; &amp;amp;amp;amp;amp;quot;> &amp;amp;amp;amp;amp;quot;)
            Else
                RichTextBox1.Text = RichTextBox1.Text.Insert(RichTextBox1.SelectionStart, TextInput.Text &amp;amp;amp;amp;amp;amp; &amp;amp;amp;amp;amp;quot;| &amp;amp;amp;amp;amp;quot;)
            End If
        End If
        ColoraRTB()
        RichTextBox1.Select(FineSel + 2, 0)
        TextInput.Text = &amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;quot;
        TextInput.Focus()
        Formdentro.Hide()
    End Sub

    Private Sub RichTextBox1_DoubleClick(sender As Object, e As EventArgs) Handles RichTextBox1.DoubleClick
        Dim InizioSel As Integer = RichTextBox1.SelectionStart - 1
        If InizioSel < 0 Then Exit Sub
        If RichTextBox1.Text.Substring(InizioSel, 1) = &amp;amp;amp;amp;amp;quot;<&amp;amp;amp;amp;amp;quot; Then
            Dim FineSelNome = RichTextBox1.Text.IndexOf(&amp;amp;amp;amp;amp;quot;>&amp;amp;amp;amp;amp;quot;, InizioSel)
            Dim FineSelCognome = RichTextBox1.Text.IndexOf(&amp;amp;amp;amp;amp;quot;|&amp;amp;amp;amp;amp;quot;, InizioSel)
            Dim FineSel As Integer = 0
            If FineSelCognome < FineSelNome Then
                FineSel = FineSelCognome
                Scelta(1).Checked = True
            Else
                Scelta(0).Checked = True
                FineSel = FineSelNome
            End If
            If FineSelNome = -1 Then
                FineSel = FineSelCognome
                Scelta(1).Checked = True
            ElseIf FineSelCognome = -1 Then
                Scelta(0).Checked = True
                FineSel = FineSelNome
            End If
            RichTextBox1.Select(InizioSel + 1, FineSel - InizioSel - 1)
            TextInput.Text = RichTextBox1.SelectedText
            TextInput.Select(TextInput.TextLength, 0)
            Inserisci.Text = &amp;amp;amp;amp;amp;quot;Correggi&amp;amp;amp;amp;amp;quot;
            Correggi = True
            Formdentro.Show()
        End If
    End Sub

    Private Sub Annulla_OnClick(sender As Object, e As EventArgs)
        Formdentro.Hide()
        Inserisci.Text = &amp;amp;amp;amp;amp;quot;Inserisci&amp;amp;amp;amp;amp;quot;
        TextInput.Text = &amp;amp;amp;amp;amp;quot;&amp;amp;amp;amp;amp;quot;
        RichTextBox1.Select(RichTextBox1.TextLength, 0)
    End Sub

    Private Sub ColoraRTB()
        Dim PosSegnaposti As New List(Of Tuple(Of Integer, Color))
        Dim Colore As Color
        Dim pos1 As Integer
        Dim pos As Integer
        Dim simb() As Char = {&amp;amp;amp;amp;amp;quot;<&amp;amp;amp;amp;amp;quot;c, &amp;amp;amp;amp;amp;quot;>&amp;amp;amp;amp;amp;quot;c, &amp;amp;amp;amp;amp;quot;|&amp;amp;amp;amp;amp;quot;c}
      
        Do
            pos = RichTextBox1.Find(simb, pos1)
            If pos > -1 Then
                pos1 = pos + 1
                If RichTextBox1.Text.Substring(pos, 1) = &amp;amp;amp;amp;amp;quot;<&amp;amp;amp;amp;amp;quot; Then Colore = Color.Black
                If RichTextBox1.Text.Substring(pos, 1) = &amp;amp;amp;amp;amp;quot;>&amp;amp;amp;amp;amp;quot; Then Colore = Color.Turquoise
                If RichTextBox1.Text.Substring(pos, 1) = &amp;amp;amp;amp;amp;quot;|&amp;amp;amp;amp;amp;quot; Then Colore = Color.OrangeRed
                PosSegnaposti.Add(tuple.Create(pos, Colore))
            End If
        Loop Until pos = -1

        If PosSegnaposti.Count < 2 Or PosSegnaposti.Count Mod 2 <> 0 Then Exit Sub

        PosSegnaposti = PosSegnaposti.OrderBy(Function(i) i.Item1).ToList

        For i = 0 To PosSegnaposti.Count - 1 Step 2
            RichTextBox1.Select(PosSegnaposti(i).Item1 + 1, PosSegnaposti(i + 1).Item1 - 1)
            RichTextBox1.SelectionColor = PosSegnaposti(i + 1).Item2
            RichTextBox1.Select(PosSegnaposti(i + 1).Item1, RichTextBox1.TextLength)
            RichTextBox1.SelectionColor = Color.Black
        Next
    End Sub
End Class


Semplicemente..... FANTASTICO!!! number ONE!! :))) Adesso metto i nomi in una tabella e cognomi in altra.. e far&amp;amp;amp;Atilde;&amp;amp;amp;sup2; in modo che ogni modifica al nome o al cognome, lo debba fare anche nelle rispettive tabelle.. questo &amp;amp;amp;Atilde;&amp;amp;amp;uml; facile perche mi prendo il valore iniziale e lo sostituisco con quello modificato.. e poi devo fare pure verifica se uno ha inserito un cognome che invece era nome e viceversa, si dovra togliere dalla tabella errata e metterla in quella corretta... evvai sono quasi alla fine del mio progettino :))

p.s.: Anticipo che farò altro post per la stampa! haahahha... non ho idea di come si stampa mettendo intestazione, titolo ecc, presi dalle variabili e che devono essere stampati in determinate posizioni nelle pagine word o pdf :)
Ultima modifica effettuata da aragorn76 22/05/20 11:44
aaa