Originariamente inviata da
gibra
Solo adesso ho capito quello che volevi dire. Mi spiace, ma vedo che hai risolto ugualmente. Buon per te.
Io imposterei anche ShortcutsEnabled su False per evitare che l'utente faccia copia & incolla, altrimenti le tue fatiche...
...se ne vanno a benedire.
Esattamente! La mia paura era quella! I copia e incolla ecc ed infatti mi sono letterlamente scervellata ed alla fine ho risolto al 100%!!
Con un blocco di codice tra l'altro molto più leggero!
In sostanza ad ogni TextChanged delle varie textbox richiamo la mia bella sub pubblica che:
- Prende il testo globale
- Lo ripulisce dai vari ritorni a capo (che a quanto pare fanno "length" )
- E lo frammenta in base ai carrateri max
- Stocca tutto in un array di stringhe (che saranno le future linee della textbox)
- E reimposta quell'array come proprietà "lines" della textbox
Risultato? Funziona benissimo ma soprattutto posso usare i copia/incolla ed affini!!!
Ecco la soluzione:
codice:
Public Sub maxLineAndChars(ByVal txt As TextBox, ByVal nLinesMax As Integer, ByVal nCharsMax As Integer)
If txt.Text.Length > 0 Then
Dim txtPulito As String = Strings.Replace(txt.Text, Environment.NewLine, String.Empty)
If txtPulito.Length > nCharsMax Then
Dim linee(nLinesMax - 1) As String
For i = 0 To nLinesMax - 1
Dim startStr As Integer = (i * nCharsMax) + 1
linee(i) = Strings.Mid(txtPulito, startStr, nCharsMax)
Next
txt.Lines = linee
txt.SelectionStart = txt.Text.Length
End If
End If
End Sub
mi basta chiamare con
codice:
maxCharsLines(sender,20,4)
ad ogni textChanged delle mie textbox ed il gioco è fatto!