Il frammento di codice qui di seguito, illustra una tenica, in ambiente windows application, di come rendere un controllo textbox, solo numerico e quindi l'impossibilità di inserire lettere o altri caratteri il tutto tranne VB.Net e C#.
Nell'evento Keypress, viene effettuato un controllo sul codice del carattere, se è diverso dal tasto back (quello di cancellazione) e non è un numerico, imposta la proprietà Handled a true, in modo che il carattere non viene inserito.
VB.Net
Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If (e.KeyChar <> Microsoft.VisualBasic.ChrW(Keys.Back)) And (Char.IsNumber(e.KeyChar.ToString(), 0) = False) Then
e.Handled =
TrueEnd If
End Sub
C#
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar != (char)Keys.Back) && (!char.IsNumber(e.KeyChar.ToString(), 0)))
e.Handled =
true;}
8 commenti:
Navigando ho letto codici di 200 righe per permettere l'inserimento di soli numeri, alcuni nemmeno accettano il backspace questo è perfetto.
Complimenti
Grazie per l'apprezzamento.
Continua a seguirmi
Salve vorrei riuscire a inserire il " - " (45)
Ma non so come fare la stringa "If (e.KeyChar ........" blocca e mi si inseriscono le lettere che non voglio !
Vi ringrazio per ogni consiglio, non so' come uscirne dalla logica.
Dim tempC As Integer
Dim KeyAscii As Short = Asc(e.KeyChar)
If (e.KeyChar <> Microsoft.VisualBasic.ChrW(Keys.Back)) And (Char.IsNumber(e.KeyChar.ToString(), 0) = False) Then
e.Handled = True
End If
If e.KeyChar = Char.ConvertFromUtf32(13) Then
e.Handled = True
End If
If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 44 And KeyAscii <> 45 And KeyAscii <> 8 Then
KeyAscii = 0
ElseIf KeyAscii > 57 Then
KeyAscii = 0
End If
If (KeyAscii = 45) And txttemp.Text.IndexOf("-") > 0 Then
e.Handled = True
End If
Luciano
Pardon le lettere sono escluse, ma mi serve il meno, per inserire esempio una temperatura di -5 ° oppure un 35 esempio.
Luciano
Ciao Anonimo,
prova con questo codice per inserire anche il meno.
If (e.KeyChar <> Microsoft.VisualBasic.ChrW(Keys.Back)) And (Char.IsNumber(e.KeyChar.ToString(), 0) = False) And (e.KeyChar <> "-") Then
e.Handled = True
End If
Preg. Emanuele Mattei, colgo l'occasione di porgerti
Un cordiale Augurio di un felice 2019 a noi tutti di questa magnifica piazza.-
Posto il codice con la "TUA MODIFICA" - compilato con MSVStudio 2017 . VB.NET Linguaggio.
Il tutto funziona perfettamente,.
==POSSO INSERIRE SOLO NUMERI NEGATIVI & NUMERI, MA NON I CARATTERI !
Questo e' quello che mi serve posto il codice anche per chi ne avesse bisogno e lo condivido con tutti !
--------------------------------------------------------------------------
Public Sub TxttempC_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txttemp.KeyPress
Dim tempC As Integer
Dim KeyAscii As Short = Asc(e.KeyChar)
If (e.KeyChar <> Microsoft.VisualBasic.ChrW(Keys.Back)) And (Char.IsNumber(e.KeyChar.ToString(), 0) = False) And (e.KeyChar <> "-") Then
e.Handled = True
End If
'.. modificato da https://www.blogger.com/, Gentile Emanuele Mattei. !
If (tempC > maxTemp) Then
MsgBox("Temp.Range -10-80", MsgBoxStyle.Exclamation, "RANGE Temp !")
txttemp.Clear()
txttemp.Focus()
e.Handled = True
End If
If (tempC < minTemp) Then
MsgBox("Temp.Range -10-80", MsgBoxStyle.Exclamation, "RANGE Temp !")
txttemp.Clear()
txttemp.Focus()
e.Handled = True
End If
End Sub
=============================================
Il maxTemp e il minTemp sono inserite subito dopo il Class iniziale, come Const(costanti)
Public Class pincopallino ..........
Const minTemp As Integer = -10
Const maxTemp As Integer = 80
Mettendoli come costanti se , volessi modificare il range, posso farlo senza andare a fare modifiche nel codice. Sono un autodidatta che ha imparato da solo, ma che non pretende di andare oltre la logica, ma almeno quella logica di base credo sia corretta.
Colgo l'occasione per ringraziarti e un sentito grazie per tutto questo.
Almeno condivido tutto quello che può essere utile anche con le altre persone.
Luciano ! (AL)
Ciao Luciano,
ma tu cosa vuoi fare? perchè se è solo per il trattino (meno) - il codice che ho postato va bene, altrimenti fammi capire bene.
Grazie Emanuele
Posta un commento