Sto lavorando a un IntelliSense per HTML, integrando anche la funzione di syntax highlighting.
Per realizzare la funzione di autocompletamento, mi serve inserire un testo all'interno di quello esistente e lo posso fare in due modi:
codice:
rtbCode.Text = rtbCode.Text.Insert(rtbCode.SelectionStart, "testo")
'oppure
rtbCode.SelectedText = "testo"
'Notare che SelectionLength = 0
Nel primo modo, risulta evidente che il testo viene rimpiazzato da quello nuovo proveniente dalla funzione Insert: il risultato è la perdita di tutta la formattazione del testo preesistente.
Il secondo è un po' meno scontato, ma anche quello provoca la perdita della formattazione.
La soluzione più ovvia sarebbe di ricolorare tutto ad ogni modifica, ma è altrettanto ovvio che è impensabile farlo: anche se il processo di highlighting è abbastanza veloce, sarebbe disumano tentare una cosa del genere.
In definitiva, mi serve un metodo che inserisca il testo nella richtextbox senza modificare il codice rtf totale, oppure uno che riesca a determinare il corrispondente rtf della proprietà SelectionStart.