Formattazione casella di testo!

venerdì 25 luglio 2008 - 10.17

dosa85 Profilo | Junior Member

Ragazzi una domanda:

Se per esempio voglio che in una textbox vengano messi valori solo numerici, oppure una data in formato GG/MM/AAAA cosa devo fare?
Naturalmente con relativo errore in caso di immissione di caratteri non consentiti!!!

gabriel81 Profilo | Junior Member

Non so se esiste un metodo già incluso nel framework, però so che esiste l'evento onkeydown
if e.keycode.tostring=qualcosa che non mi piace Then
Msgbox("Attento a cosa scrivi!")

non so se ti può andare...

luigidibiasi Profilo | Guru

Usa il controllo MaskedTextBox

Luigi Di Biasi

alexmed Profilo | Guru

Ciao dosa85,
Prima di tutto una domanda:
Vuoi un controllo unico sia per "numericBox" che per "dataBox" oppure due separati?

Mi rispondo da solo: 2 separati
in uno inserisco solo numeri nell'altro le date!
Ok

Per le date allora come a detto luigidibiasi userei la MTB (MountanByke).

Per quanto riguarda la "numericBox" abbiamo una vasta scelta di soluzioni:

La prima e la più completa ti costrusci (esiste già: -- http://www.dreamincode.net/forums/showtopic48794.htm --) una classe dove, detto in parole povere, disbiliti la tastiera per tutto ciò che non è numerico!
In questo caso non c'è bisogno di nessun controllo perchè non hai la possibilità di inserire lettere e simboli o spazi.

Nell'altro caso puoi fare in modo che nell'evento LostFocus controlli il contenuto della TextBox ed in caso non vi sia un numero ti appare il messaggio di errore:


Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LostFocus
If Text.Length > 0 Then
If IsNumeric(Text) Then
Dim txtNum As Double = Text
Text = String.Format("{0:N" & DecimalPlaces & "}", txtNum) 'Qui gli dai anche una formattazzione
Else
MsgBox("Il valore inserito non è corretto", MsgBoxStyle.Critical, Application.ProductName)
Me.Focus()
Me.SelectAll() ' Qui fai in modo che se non è un numero non lasci mai il Focus
End If
End If
End Sub

Infine cerca su Internet NumericTextBox oppure NumericBox e qualcosa di specifico che fà al caso tuo lo trovi

Tipo questa:
http://blogs.dotnethell.it/sandro/Convertire-una-TextBox-in-una-TextBox-Numerica__12984.aspx

Considerazione finale:

Se nella tua applicazione devi inserire solo una casella in cui inserisci i numeri allora va bene il controllo sull'evento LostFocus, ma se hai 20 0 30 caselle da controlllare allora vale la pena di farsi una classe.

Ciao ciao

DomA Profilo | Expert

ciao dosa,
nei controlli di vb 2005 c'è una particolare textbox che si chiama >MaskedTextBox< che serve appunto per l'inserimento di particolari dati come numeri e/o date. Per impostare il tipo di dati che vuoi gestire col suddetto controllo non devi far altro che selezionare la voce Mask, dall'elenco delle proprietà, e selezionare il tipo di input che ti serve.

Se, invece, vuoi controllare che l'input inserito in una normale textbox sia numerico puoi fare così:

dim Contr as Boolean = Isnumeric(me.txtimporto.text)
if Contr=true then
Importo = csng(me.txtimporto.text)
else
msgbox("Controllare il campo importo ed assicurarsi di aver inserito un numero.",...)
end if

Io ti consiglierei di inserire il codice nell'evento Lostfocus della tua txt

p.s. puoi usare una ruotin del genere anche per assicurarti che non vengano inseriti, distrattamente, import negativi.

Nella nostra epoca il più grande dilemma è la scelta...
Domenico Mancina

dosa85 Profilo | Junior Member

Grazie ragazzi!
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