Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Colorare porzione di testo
Forum - C# / VB.NET - Colorare porzione di testo

Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 22:57
Sabato, 07/11/2009
Salve a tutti sto facendo un'editor molto strano( :rofl: ) e vorrei che quando l'utente scir una parola, ad esempio, "Ciao" il programma mi colori quel "Ciao" in un colore però quando, ad esempio, scirov "Ciao come va?" lui mi scriva solo "Ciao" con il colore, ad esempio, blu e invece tutti gli altri ancora con il nero..come faccio?:hail:
P.S: Ho utilizzato un codice:
Codice sorgente - presumibilmente VB.NET

  1. For i As Integer = 0 To 10
  2.                 Start = (txtcode.Text.Length + 1) * i
  3.                 txtcode.Select(Start, txtcode.Text.Length)
  4.                 txtcode.SelectionColor = Color.FromArgb(Color.Green.ToArgb + (i * 5000))
  5.             Next


e funziona ma se ad esempio scrivo "Ciao come va?" me lo scrive tutto in blu e non ciao in blu e gli altri ancora in nero:d
Grazie per l'aiuto
:k:

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 13:34
Domenica, 08/11/2009
Non so proprio come faccia a funzionare, quel codice. Se i è 0, Start è 0 e la selezione è lunga quanto il testo, ossia ti seleziona tutto cambiandone il colore. Se i è maggiore o uguale a uno, certamente il codice darà errore di overflow, in quando Start è sempre maggiore o uguale della lunghezza del testo, e l'indice txtcode.Text.Length + 1 non può mai esistere (gli indici validi vanno da 0 a txtcode.Text.Length - 1).
Non capisco, poi, perchè usare quel codice assurdo per ottenere il colore blu, quando basta Color.Blue (tanto il colore non ti cambia perchè dopo i=0 il codice va in overflow).

Per trovare una parola, basta usare la funzione Find, ad esempio:
Codice sorgente - presumibilmente Delphi

  1. Sub Highlight(ByVal Start As Int32)
  2.   Dim Index As Int32 = txtcode.Find("Ciao", Start, RichTextBoxFinds.WholeWord)
  3.   'Find dovrebbe evidenziare automaticamente la parola trovata
  4.  txtcode.SelectedColor = Color.Blue
  5.  If Index + "Ciao".Length < txtcode.Text.Length - 1 Then
  6.    Highlight(Index + "Ciao".Length)
  7.  End If
  8. End Sub


Ultima modifica effettuata da Il Totem il 08/11/2009 alle 13:35
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 13:47
Domenica, 08/11/2009
Testo quotato

Postato originariamente da Il Totem:

Non so proprio come faccia a funzionare, quel codice. Se i è 0, Start è 0 e la selezione è lunga quanto il testo, ossia ti seleziona tutto cambiandone il colore. Se i è maggiore o uguale a uno, certamente il codice darà errore di overflow, in quando Start è sempre maggiore o uguale della lunghezza del testo, e l'indice txtcode.Text.Length + 1 non può mai esistere (gli indici validi vanno da 0 a txtcode.Text.Length - 1).
Non capisco, poi, perchè usare quel codice assurdo per ottenere il colore blu, quando basta Color.Blue (tanto il colore non ti cambia perchè dopo i=0 il codice va in overflow).

Per trovare una parola, basta usare la funzione Find, ad esempio:
Codice sorgente - presumibilmente Delphi

  1. Sub Highlight(ByVal Start As Int32)
  2.   Dim Index As Int32 = txtcode.Find("Ciao", Start, RichTextBoxFinds.WholeWord)
  3.   'Find dovrebbe evidenziare automaticamente la parola trovata
  4.  txtcode.SelectedColor = Color.Blue
  5.  If Index + "Ciao".Length < txtcode.Text.Length - 1 Then
  6.    Highlight(Index + "Ciao".Length)
  7.  End If
  8. End Sub



ok...ho visto sul tuo sito una guida sulla Syntax Highlight, mi potresti spiegare come si utilizza e poi come posso modificarla a mio paicere? :hail:
Grazie:k:

PM Quote