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
Inputbox testo solo numeri
lunedì 15 marzo 2010 - 19.51
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
lun 15 mar 2010 - 19:51
E' possibile personalizzare la casella di testo di una inputbox??? Oppure interagire con la casella di testo per permettere solo inserimento di caratteri numerici???
Spero di non essere costretto a creare una windows form con una textbox e da lì gestire il KeyPress.
Ciao e grazie
AntCiar
Profilo
| Expert
934
messaggi | Data Invio:
lun 15 mar 2010 - 23:33
Ciao.
Se a te serve inserire solo numeri utilizza la numeriUpdown al posto della textBox.
Se poi vuoi un qualcosa di dinamico, allora creati una classe che eredita dalla TextBox e gli implementi l'evento KeyPress e a seconda delle impostazioni decidi se accettare solo numeri, solo lettere, oppure testo e numeri.
Ciao ciao
Cristian Barca
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
mar 16 mar 2010 - 20:14
Penso di creare una dll con una form che imita una input box.
Secondo te la scelta va bene
ridaria
Profilo
| Expert
904
messaggi | Data Invio:
mer 17 mar 2010 - 04:42
Usa questa, vedi che te ne pare:
Module MOD_TEXTBOX
Function Text_Solo_Numeri(ByVal pKeyAscii As Integer, ByVal pTextBox As TextBox, Optional ByVal pNegativi As Boolean = False) As Integer
'Impedisce l'Inserimento di caratteri non numerici
'Se il carattere non è un numero allora restituisce 0 altrimenti restituisce il codice Ascii del numero digitato
'Richiamare la funzione nell'evento KeyPress della textBox in cui si vuole che vengano scritti solo NUMERI
'Assegnare alla variabile keyAscii dell'evento KeyPress della TextBox in questione il valore restituito da questa Funzione
If pNegativi = False Then 'Solo Positivi
If (pKeyAscii >= 47 And pKeyAscii <= 57) Or pKeyAscii = 8 Or pKeyAscii = 46 Or pKeyAscii = 44 Then
If pKeyAscii = 46 Or pKeyAscii = 44 Then
If Not virgolaExist(pTextBox.Text) Then
pKeyAscii = Txt_Punto_Virgola(pKeyAscii)
Else
pKeyAscii = 0
End If
End If
Text_Solo_Numeri = pKeyAscii
Else
Text_Solo_Numeri = 0
End If
Else 'Anche negativi
If (pKeyAscii >= 47 And pKeyAscii <= 57) Or pKeyAscii = 8 Or pKeyAscii = 46 Or pKeyAscii = 44 Or pKeyAscii = 45 Then
If pKeyAscii = 46 Or pKeyAscii = 44 Then
If Not virgolaExist(pTextBox.Text) Then
pKeyAscii = Txt_Punto_Virgola(pKeyAscii)
Else
pKeyAscii = 0
End If
End If
Text_Solo_Numeri = pKeyAscii
Else
Text_Solo_Numeri = 0
End If
End If
End Function
Function virgolaExist(ByVal pNUmero As String) As Boolean
Dim n As Integer
If Len(pNUmero) > 0 Then
For n = 1 To Len(pNUmero)
If Asc(Mid(pNUmero, n, 1)) = 44 Then
virgolaExist = True
Exit For
End If
Next n
End If
End Function
Function Txt_Punto_Virgola(ByVal pKeyAscii As Integer)
Dim car As String
'sostituisce il punto con la virgola
'Richiamare la Funzione nell'evento KeyPress della textBox in cui si vuoile che si digiti sempre una virgola e non il punto
'Assegnare alla variabile keyAscii dell'evento KeyPress della TextBox in questione il valore restituito da questa Funzione
If pKeyAscii = 46 Then
car = Chr(44)
Txt_Punto_Virgola = Asc(car)
Else
Txt_Punto_Virgola = pKeyAscii
End If
End Function
End Module
Poi nell'evento keyPress della casella di testo inserisci la chiamata alla funzione Text_Solo_Numeri in questo modo:
Private Sub txtBoxNumerica(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
e.KeyChar = Chr(Text_Solo_Numeri(Asc(e.KeyChar), txtBoxNumerica))
End Sub
Non devi far altro.
La funzione Text_Solo_Numeri ha anche un parametro per i valori negativi, con il quale potrai decidere se abilitare anche l'inserimento di valori negativi preceduti dal segno meno.
La funzione inoltre impedisce l'inserimento del punto, tramutandolo sempre in virgola. Ciò perché si presume che la funzione venga usta per sistemi metrici decimali europei e non USA. In questo modo dirai agli utenti che non devono preoccuparsi, qualunque cosa inseriscono, punto o virgola il sistema è intelligente. :-)
Ciao
Riccardo D'Aria
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
sab 20 mar 2010 - 09:49
Ho risolto con una classe esterna contenente una windowsform disegnata come una InputBox dove posso controllare completamente la text box in particolare il KeyPress ed il KeyDown, questa viene chiamata come finestra di dialogo restituendo il valore alla sua chiusura.
Grazie comunque per le risposte
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 !