Controllo TextBox

mercoledì 23 gennaio 2008 - 17.38

walter.tomiati.90 Profilo | Junior Member

Salve,
devo obbligare all'utente di inserire dentro una textbox (in visual basic 2005) solo numeri e la ",". E possibile ?

Tomiati Walter
---> Gabba, Gabba, Hey !!! <---

chico_ Profilo | Newbie

Come impostazione dalle proprietà della TextBox non credo proprio.
L'alternativa è crearsi una routine che all'evento TextChanged della TextBox verifichi cosa sia stato inserito, e cancellare l'ultima digitazione se non rientra nei caratteri previsti. Ma il tutto si complica se vuoi tenere presente l'eventualità del copia-incolla da parte dell'utonto (che per vedere se il tuo codice lo prevede, seleziona un testo dal notepad, lo copia, e cerca di incollarlo nella tua text).

Secondo me meglio un Validating al lost focus della TextBox. Dopo 'n' messaggi di avvertimento l'utonto si stanca di fare prove idiote.

Ciauz

CHico

alextyx Profilo | Expert

Se agisci nel textchanged, non dovrebbe esserci problema col copiaincolla, anche se fatto col mouse. Se i caratteri non sono quelli voluti, usi lo Undo.

chico_ Profilo | Newbie

Scusa, Alextyx, ma
(MSDN : Metodo TextBoxBase.Undo)

"Nota : Il metodo Undo non funziona con gli eventi KeyPress e TextChanged."

o ho interpretato male io ?

Ciauz

CHico

alextyx Profilo | Expert

E chi sono io per contraddire MSDN!
Se poi, tanto per scrupolo, giusto per passare il tempo, vuoi provare un codice come questo.....

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
If Me.TextBox1.Text = "" Then
Me.TextBox1.ClearUndo()
Exit Sub
End If

If Not IsNumeric(Me.TextBox1.Text) Then
Me.TextBox1.Undo()

End If
Me.TextBox1.ClearUndo()
End Sub

Dovrebbe garantirti una textbox di soli numeri, o operatori relativi ad un tipo numerico (-.,+ ecc...). MSDN permettendo, naturalmente!
Spero non ci siano bugs, ma quello che conta è stabilire se Undo funziona, poi ognuno si raffinerà i criteri a seconda delle proprie esigenze.
A proposito...ma sei tu o non sei tu? Cerrrrto che sei tu, vero?
Anche se hai un altro avatar!

chico_ Profilo | Newbie

Mai fidarsi di MSDN ....
PRIMA chiedere a Alextyx e/o consultare il blog di Cteniza.....POI consultare MSDN

(ero convinto che MSDN avesse ragione anche perchè nel codice di prova non avevo messo il ClearUndo, quindi giustamente andava in Loop... poi visto che MSDN diceva che non era possibile, non ci avevo sbattuto il cranio piu' di tanto).

Grazie della correzione , Alextyx.

Mi scuso anche con Walter per aver dato una risposta imprecisa.

Ciauz

Chico

p.s.: si, sono sempre io

alextyx Profilo | Expert

Eddai Chico, non esagerare. Ce ne fossero di utenti come te!
Anch'io, se avessi letto quello che riporti tu, prima di aver usato lo 'undo', sarei giunto alle stesse conclusioni e lo avrei evitato.
Solo che ci ho già basato un controllo personalizzato, quindi....
Chissà cosa vogliono dire su MSDN? Boh.....
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