Formattazione textbox

venerdì 16 marzo 2007 - 15.32

mine Profilo | Newbie

ciao, vorrei poter formattare tutte le stringhe presenti nelle textbox della mia appl. con un formato specifico, con la prima lettere di ogni stringa in maiuscolo e le altre in minuscolo, c'è un metodo "quick" per fare questo?

wacker976 Profilo | Newbie

Se ti serve fare questo in tempo reale (cioè mentre l'utente digita), prova qeusta:


Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress
Dim TB As TextBox = CType(sender, TextBox)
If TB.Text.Length = 0 Then
Dim CodiceASCII As Short = Microsoft.VisualBasic.Asc(e.KeyChar)
If (CodiceASCII > 97) And (CodiceASCII < 122) Then
e.KeyChar = Chr(CodiceASCII - 32)
End If
End If
End Sub

mine Profilo | Newbie

non lo dovrei fare mentre l utente digita, ma bensi dopo la validazione dell input, cioè, l'utente scrive nella textbox e quando la textbox nn ha piu il focus(o lo stato attivo) parte la formattazione della textbox.....nn so se mi sono spiegato...(cmq io uso c#....)..grazie

wacker976 Profilo | Newbie

in tal caso (converti il tutto nel linguaggio di programmazione che preferisci):


Private Sub TextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
Dim TB As TextBox = CType(sender, TextBox)

Dim Testo As String = TB.Text
If Testo.Length > 0 Then
Dim CharIniziale As String = Testo.Substring(0, 1)
Dim CodAscii As Short = Asc(CharIniziale)
If (CodAscii > 97) And (CodAscii < 122) Then
Dim str As String = Testo.Substring(1)
CodAscii -= 32
CharIniziale = Chr(CodAscii)
TB.Text = CharIniziale & str
End If
End If

End Sub


mine Profilo | Newbie

ok funziona,grazie......adesso pero vorrei che eseguire questo metodo al caricamento dei dati nelle textbox,all apertura dell'applicazione.....dovrei inserire questo codice nell'evento format?

wacker976 Profilo | Newbie

io creerei una funzione del tipo ConvertiTesto (TB as TextBox), in cui riporti il codice per modificare il testo di una singola textbox, e poi in Form_Load, dopo aver caricato i dati nelle varie textbox, richiami la funzione per ogni textbox

Lucifel Profilo | Junior Member

>Se ti serve fare questo in tempo reale (cioè mentre l'utente
>digita), prova qeusta:
>
>
>Private Sub TextBox6_KeyPress(ByVal sender As Object, ByVal e
>As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress
> Dim TB As TextBox = CType(sender, TextBox)
> If TB.Text.Length = 0 Then
>Dim CodiceASCII As Short = Microsoft.VisualBasic.Asc(e.KeyChar)
>If (CodiceASCII > 97) And (CodiceASCII < 122) Then
> e.KeyChar = Chr(CodiceASCII - 32)
> End If
> End If
> End Sub
>

Ciao, io ho un problema simile, cioè, mentre l'utente digita devo permettere l'inserimento di soli numeri all'interno di una textbox.

Questo codice è molto simile a quello che devo fare io, ma mi da problemi sul questo punto:

e.KeyChar = Chr(CodiceASCII - 32)

perchè mi dice che la proprietà KeyChar è ReadOnly

Sai come fare a correggere questo errore?

Grazie

Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

wacker976 Profilo | Newbie

Prova questa (deve andare per forza):

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

Dim Tasto As Integer = Asc(e.KeyChar)
If Not ((Tasto >= 48) And (Tasto <= 57)) Then
e.Handled = True
End If
End Sub



ti consiglio anche di aggiungere qualche altro keycode (tipo backspace, canc, space ...)

Lucifel Profilo | Junior Member

>Prova questa (deve andare per forza):
>
>Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e
>As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
>
>Dim Tasto As Integer = Asc(e.KeyChar)
> If Not ((Tasto >= 48) And (Tasto <= 57)) Then
> e.Handled = True
> End If
>End Sub
>
>
>
>ti consiglio anche di aggiungere qualche altro keycode (tipo
>backspace, canc, space ...)
>

non posso farlo perché in quel textbox ci devono andare degli importi di monete in euro, quindi posso accettare solo 1 virgola, e il resto numeri.

con il codice che hai usato si può cancellare una cifra già inserita?

grazie

Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------

wacker976 Profilo | Newbie

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

Dim collTastiConsentiti As New System.Collections.Generic.List(Of Int16)
collTastiConsentiti.Add(13) 'ENTER
collTastiConsentiti.Add(8) 'BACKSPACE
collTastiConsentiti.Add(44) 'VIRGOLA


Dim Tasto As Integer = Asc(e.KeyChar)
If (Not ((Tasto >= 48) And (Tasto <= 57))) And (Not (collTastiConsentiti.Contains(Tasto))) Then
e.Handled = True
End If

End Sub



Così usi anche la virgola, il backspace .....

Lucifel Profilo | Junior Member

grazie, avevo già risolto in un modo un po' meno elegante... anche perché la virgola può starci solo 1 volta e non in prima posizione...
diciamo che ho fatto un po' di if...


Diego
-----------------------------------
Avanti sempre e comunque!
-----------------------------------
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5