IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET] Textbox -> seulement des chiffres sans API?


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 139
    Points : 74
    Points
    74
    Par défaut [VB.NET] Textbox -> seulement des chiffres sans API?
    Salut

    Je veux savoir s'il es possible de faire un fonction qui accepte seulement les chiffres. J'ai vu plusieurs exemples sur le net mais ils utilisent tous les APIs

    Est-il possible de faire une telle fonction sans utiliser les APIs??

    Si oui, j'aimerais que vous me donniez des hints! pour le faire...

    Merci beaucoup!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 92
    Points : 114
    Points
    114
    Par défaut
    tu peux tester sur un des evenements keydown, keyup ou keypress la touche ou le caractère qui a été saisi et annuler cette saisie si cela ne te convient pas.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 139
    Points : 74
    Points
    74
    Par défaut
    salut

    merci pour les infos...mais tu vien de me perdre...!

    pourrais tu me donner un peu de code avec ca car la je ne sais pas trop ou commencer...je n'ai jamais utiliser ces evenements...

    merci !

  4. #4
    Membre habitué Avatar de del-dongo
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Points : 183
    Points
    183
    Par défaut
    tu peux intercepter l'evnement onkeypress de ton textbox
    et tester si le caractère est de type numeric

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private void bsiTextBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
    if( !Char.IsDigit(e.KeyChar) )
    	e.Handled = true;
    }
    evidemment il y a plein d'autres tests à effectuer... et l'idéal serait de te créer ton propre composant de type numericTextbox qui hérite de textbox et qui effectue tous ces traitements...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 139
    Points : 74
    Points
    74
    Par défaut
    comme je vois ca lair beaucoup plus compliqué sans les API héhé

    si par exemple je decide de prendre les API et que je veux afficher un message derreur lorsque ce nest pas des lettres...ou il fau que jeplace cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lberror.Text = "Des chiffres!"

    avec ce code ci des API

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
        Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
        Private Const ES_NUMBER As Long = &H2000&
        Private Const GWL_STYLE As Long = -16
     
    Private Sub MakeNumericOnly(ByVal Obj As Object)
            '# Cette variable contiendra le Style de notre Controle :
            '# il s'agit d'une combinaison de differentes valeurs...
            Dim Style As Long
     
            '# On récupère le style actuel
            Style = GetWindowLong(Obj.hwnd, GWL_STYLE)
     
            '# On ajoute le style ES_NUMBER...
            Style = Style Or ES_NUMBER
     
            '# et on replace le tout dans le Controle
            SetWindowLong(Obj.hwnd, GWL_STYLE, Style)
        End Sub
     
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            MakeNumericOnly(txtAjout.text)
              End Sub
    merci!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 139
    Points : 74
    Points
    74
    Par défaut
    bonjour...

    existe t il une facon avec une variable qui compare toute les lettres dispo dans lalphabet..

    je pourrai genre faire ceci :

    Dim variable
    variable = CultureInfo.CurrentCulture.CompareInfo.IndexOf(textbox.text, "variable pour les lettres" , CompareOptions.IgnoreCase)

    de cette facon je pourrai donc savoir si mon textbox contient des lettre ou pas... serais p-e plus simple comme cela...

    qu'en pensez vous?

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    La solution de del-dongo me plait assez

    Sinon, à la place de Char.IsDigit, tu peut utiliser la fonction IsNumeric d'Erebuss:

    http://www.developpez.net/forums/vie...835281#1835281

  8. #8
    Membre averti Avatar de Dinytro
    Profil pro
    Inscrit en
    Août 2003
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 390
    Points : 395
    Points
    395
    Par défaut
    oui c'est clair, la solution del-dongo est la plus simple je pense ... pas besoin d'API pour ce genre de traitement...
    Un problème sans solution est un problème mal posé. (Albert Einstein)

    Placez votre main sur un poêle une minute et ça vous semble durer une heure. Asseyez vous auprès d'une jolie fille une heure et ça vous semble durer une minute. C'est ça la relativité (Albert Einstein)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 92
    Points : 114
    Points
    114
    Par défaut
    Question bête qui m'est venue ce week end:
    Si l'utilisateur reste appuyé sur une touche suffisemment longtemps pour que le mode repeat se mette en route quel évènement peut gérer ca?
    Le test ne serait il pas plus efficace sur le keyup?

  10. #10
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par ld9474
    Question bête qui m'est venue ce week end:
    Si l'utilisateur reste appuyé sur une touche suffisemment longtemps pour que le mode repeat se mette en route quel évènement peut gérer ca?
    Le test ne serait il pas plus efficace sur le keyup?
    d'où l'interêt parfois de vérifier à la fin, avec par exemple une expression regulière et un errorprovider qui affiche un petit point d'exclamation a coté du controle ainsi qu'un message (ce que veut faire playmo justement)

    et c'est sans API
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2005
    Messages : 139
    Points : 74
    Points
    74
    Par défaut
    merci bien a tous... jai resolu tout mes problemes grace a vous! héhé

    vous etes vraiment indispensable!! hahahaha

    bonne journée a tous!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. TextBox : Seulement des chiffres
    Par benny-blanco dans le forum Windows Phone
    Réponses: 2
    Dernier message: 21/11/2012, 09h31
  2. Extraire seulement des chiffres dans une cellule
    Par helkøwsky dans le forum Excel
    Réponses: 2
    Dernier message: 12/11/2010, 18h59
  3. taper seulement des chiffres dans <input>
    Par AmineDev9 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 05/05/2008, 22h05
  4. taper seulement des chiffres dans <input>
    Par AmineDev9 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 04/05/2008, 04h24
  5. Seulement des chiffres firefox
    Par zulot dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/08/2007, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo