+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 8 su 8

TextBox che accetta solo numeri

  1. #1
    motocross'88 non è in linea Scolaretto
    qualcuno sa che codice che devo mettere(di tipo If n1=......) che mi controlli che in una textbox vada scritto un numero e non una lettera....Grazie
    scusate, siccome non ho ancora molta esperienza, mi potreste fare un esempio col codice....thank you
    Ultima modifica di motocross'88; 10-03-2006 16:18 
    ℹ️ Leggi di più su motocross'88 ...

  2. #2
    L'avatar di Cteniza
    Cteniza non è in linea Amanuense
    Alcuni metodi:
    1) metti keypreview sulla form, intercetti il tasto e verifichi isdigit
    2) Usi le regular expressions per testare (in un punto prestabilito) che il valore sia valido
    3) In un punto prestabilito usi tryparse (se restituisce vero si tratta di un numero)
    4) in un punto prestabilito usi un blocco try/catch in cui fai la conversione, se entra nel catch il valore è errato
    Se usi il binding ti consiglio di intercettare gli eventi format / parse e di mettere lì il tuo controllo
    Ultima modifica di elisab; 15-10-2011 22:57 

  3. #3
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    In aggiunta a quanto già detto da Cteniza, vorrei suggerire un controllo anche sull'evento textchanged, che possa ricorrere ad un 'undo' se il testo introdotto non fosse numerico (utile, per la verifica, il tryparse suggerito da Cteniza). Questo ti servirà per controllare l'introduzione di caratteri non validi mediante il copia - incolla. Se passi a VB2005, se non sbaglio, dovresti poter usare il corrispondente del MaskedEdit, che comunque puoi usare anche in 2003, se lo aggiungi ai controlli, ma in quel caso si tratta di un componente non .Net, proveniente da VB6 e se fosse possibile, sarebbe meglio evitarlo.
    Al maskededit, comunque, puoi imporre di accettare solo numeri e così ti risolvi il problema.
    ℹ️ Leggi di più su alextyx ...

  4. #4
    L'avatar di chico_
    chico_ non è in linea Topo di biblioteca Ultimo blog: Attacco a Oscommerce
    In Vb6 si puo' usare l'API SetWindowLong per inibire la digitazione di caratteri non numerici in una textbox. Per curiosità (tengo a precisare che "utilizzo" VB6 e non conosco VB.NET) ho dato una veloce occhiata in rete e ho trovato questo link:

    http://www.vb-helper.com/howto_net_a...ly_digits.html

    A voi l'ardua sentenza....


    Ciauz

    Chico
    ℹ️ Leggi di più su chico_ ...

  5. #5
    L'avatar di Cteniza
    Cteniza non è in linea Amanuense
    Con vb.net invece credo che usare oggetti com o dll "unmanaged" sia solo la risorsa "di quando non esistono alternative"

  6. #6
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Oh...il buon chico, zitto-zitto micio-micio, ti scova sempre una serie di linkini interessanti
    Ora non posso mettermi a provarlo, ma mi pare che l'uso della API che suggeriscono, impedisca il copia incolla ..... e secondo me questo è male e foriero di disgrazia e dannazione (paura eh? )!
    Ecco perchè suggerivo di testare il valore sul textchanged e di ricorrere all'undo (inizializzando il text=0, o comunque ad un valore numerico, quando si parte), perchè un valore copia-incollato 'valido', non c'è motivo che non venga accettato.
    Comunque interessante, specialmente x uno come me che le API le ha viste più che altro in campagna e intorno ad una arnia assolata!
    ℹ️ Leggi di più su alextyx ...

  7. #7
    L'avatar di chico_
    chico_ non è in linea Topo di biblioteca Ultimo blog: Attacco a Oscommerce
    Caro Torquemada, , se funziona come in VB6 il copia-incolla NON e' disabilitato. Purtroppo, pero', se incolli un valore non numerico il codice non funziona , nel senso che vengono accettati anche valori non numerici Penso dipenda dal fatto che il controllo viene eseguito durante la digitazione.

    Ciauz

    Chico
    ℹ️ Leggi di più su chico_ ...

  8. #8
    L'avatar di alextyx
    alextyx non è in linea Moderatore Globale
    Mentre i ferri scaldano nel bracere, sono tornato a dare un'occhiata:

    "This class also overrides the TextBox's WndProc subroutine to inspect Windows messsages. It ignores any WM_PASTE and WM_CONTEXTMENU messages so the user cannot press Ctrl-V or use the TextBox's context menu to paste non-numeric text into the control. "


    In particolare questo punto:
    "It ignores any WM_PASTE and WM_CONTEXTMENU "

    E' vero che potrei equivocare. Non parlo inglese con la stessa maestria con la quale mi dipano tra i dialetti tribali dell'alta valle del Gange, tuttavia, ad occhio e croce, mi sembra che tarpi proprio le ali al copia-incolla.

    Comunque sia, o che abbia ragione io, o che tu abbia torto (leggi con attenzione! ) Il nodo del copia incolla resterebbe aperto!
    Ciao
    ℹ️ Leggi di più su alextyx ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 22
    Ultimo Post: 31-05-2016, 08:20
  2. [C++] inserire solo numeri
    Da Missileback nel forum C/C++
    Risposte: 5
    Ultimo Post: 27-12-2014, 21:52
  3. varchar accetta solo 255 caratteri
    Da Jessi45 nel forum MySQL
    Risposte: 25
    Ultimo Post: 26-10-2014, 17:27
  4. Solo 2 numeri in textbox
    Da xnitro nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 28-06-2007, 17:48
  5. Solo numeri in inputbox
    Da FEFE nel forum Visual Basic 6
    Risposte: 6
    Ultimo Post: 31-03-2006, 12:30