Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Filtrare testo di input di un textbox
sabato 01 settembre 2007 - 18.26
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Giovanni_3478
Profilo
| Senior Member
293
messaggi | Data Invio:
sab 1 set 2007 - 18:26
Ciao
Ho un textbox e vorrei che
si potessero inserire solo i numeri (0123456789) e i caratteri . e , .
senza che il textbox presenti nessuna maschera.
Bisogna usare un maskedtextbox?
Ma come bisogna settare la proprietà mask per ottenere il risultato di cui sopra?
O altrimenti come pocedere?
bostongeorge985
Profilo
| Newbie
10
messaggi | Data Invio:
dom 2 set 2007 - 14:01
Ciao,
bisogna solo inserire il seguente codice nell'evento keypress della tua textbox:
If Not Char.IsNumber(e.KeyChar) And Not Char.IsControl(e.KeyChar) Then
e.Handled = True
End If
P.S. se risolvi il problema clicca su accetta risposta
Giovanni_3478
Profilo
| Senior Member
293
messaggi | Data Invio:
lun 3 set 2007 - 11:07
Sì funziona.
Volendo permettere però il carattere virgola quale metodo devo usare?
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
lun 3 set 2007 - 11:22
Dovresti aggiungere un 'And Not Char...' anche per la virgola o il punto decimale.
Purtroppo, se ho capito quello che vuoi fare, la cosa non è semplice. Ad esempio, vuoi permettere che possano essere inserite due virgole? Oppure, che ci si possano incollare parti di testo a piacere (l'evento KeyPress non viene scatenato dal 'copia incolla' con un click del mouse e comunque coinvolge ben più di un carattere, quindi dovresti usare l'Undo)?
Il creare una textbox che impedisca a qualcuno di scrivere qualcosa che non sia un numero ben formattato, è una bella impresa. Il consiglio è di provare con MaskedEdit, altrimenti l'impegno può diventare importante!
bostongeorge985
Profilo
| Newbie
10
messaggi | Data Invio:
lun 3 set 2007 - 18:28
dopo il codice che ti ho dato inserisci questo
If Char.IsPunctuation(e.KeyChar) AndAlso Not CType(sender, TextBox).Text.Contains(",") Then
e.Handled = True
CType(sender, TextBox).Text += ","
CType(sender, TextBox).SelectionStart = CType(sender, TextBox).Text.Trim.Length
End If
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
lun 3 set 2007 - 18:49
>dopo il codice che ti ho dato inserisci questo
>
>If Char.IsPunctuation(e.KeyChar) AndAlso Not CType(sender, TextBox).Text.Contains(",")
>Then
> e.Handled = True
> CType(sender, TextBox).Text += ","
>CType(sender, TextBox).SelectionStart = CType(sender, TextBox).Text.Trim.Length
>End If
>
>
Sono dei buoni scampoli di codice, per carità, ma il problema non è così semplice. Puoi tornare indietro con le freccette e inserire la virgola dove te l'eri dimenticata e quindi il selectionstart che ti ributta a fine testo non va bene. Inoltre rimane aperto il problema del copia-incolla.
Insomma, la cosa non è banalissima e richiede qualche riga di codice in più, ecco perchè, forse, il maskededit potrebbe essere da prendere in considerazione. Oppure c'è da perdere un po' di tempo anche per pensare tutte le varie circostanze che devono essere previste.
Ci saranno separatori delle migliaia (da noi i punti, in USA le virgole)? Eccetera.....
Giovanni_3478
Profilo
| Senior Member
293
messaggi | Data Invio:
mar 4 set 2007 - 19:28
...sì il codice inizialmente assolve al suo scopo
ma poi ha quel difetto che ha detto alextyx .......
Torna su
Stanze Forum
Elenco Threads
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 !