Ho una RichTextBox di nome rtbCode. All'evento TextChanged, vi è posto questo codice:
codice:
If rtbCode.SelectionStart > 0 Then
Dim Start As Int32 = rtbCode.SelectionStart
'Trova il < d'inizio.
Dim OpeningTag As Int32 = rtbCode.Text.LastIndexOf("<", 0, Start - 1)
'Se c'è, controlla che sia di questo tag
If OpeningTag = -1 Then
Exit Sub
End If
'...
Quando ho terminato di scrivere "<ht" (per "<html>"), viene segnalato un errore, un'eccezione di tipo ArgumentOutOfRangeException, riferito a "Start - 1", il parametro count della funzione LastIndexOf. Non ho usato Find per alcuni motivi che non sto a spiegare. Il problema è che questa eccezione non dovrebbe essere generata. Infatti dall'esempio si nota, anche inserendo breakpoints nel codice, che il testo è "<ht", ossia una stringa non nulla: per cui il parametro startIndex è a posto. Si nota inoltre che, dopo aver digitato tale testo, SelectionStart vale 3 (indica la posizione successiva a "t", ossia 2+1) e indica il carattere non ancora scritto (è per questo che ho messo -1): in definitiva, la funzione viene richiamata sull'analisi dei primi 2 caratteri della stringa "<ht" a partire dal primo, a indice 0. Quindi non capisco dove sia l'errore. C'è qualcuno che mi illumini?