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

VB.NET Discussion :

Capter la touche Point du pavé numérique


Sujet :

VB.NET

  1. #1
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut Capter la touche Point du pavé numérique
    Bonjour,

    J'ai découvert récemment les subtilités des paramètres régionaux en matière de séparateur décimal.
    Par exemple, si vous avez réglé vos paramètres Windows de sorte que le séparateur décimal est la virgule, que ce soit dans l'onglet nombres ou dans l'onglet système monétaire, le point du pavé numérique va continuer de taper un point.
    Donc mon objectif est de lui faire taper une virgule

    Voilà le code que j'ai tenté dans un form :

    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
        Private Sub DG_HistoriqueAchats_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
            Handles DG_HistoriqueAchats.KeyPress
            If _IsDecimalPressed Then
                e.KeyChar = CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator
            End If
        End Sub
     
        Private Sub DG_HistoriqueAchats_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _
            Handles DG_HistoriqueAchats.KeyDown
            If e.KeyData = Keys.Decimal Then
                _IsDecimalPressed = True
            End If
        End Sub
     
        Private Sub DG_HistoriqueAchats_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _
            Handles DG_HistoriqueAchats.KeyUp
            _IsDecimalPressed = False
        End Sub
    DG.HistoriqueAchat est un datagridview contenu dans le Form

    Pas de chance, le code ne rentre jamais dans l'event KeyPress ou KeyDown.

    Je ne comprends pas pourquoi.

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Points : 166
    Points
    166
    Par défaut
    Est ce que tu essaies d'intercepter les événements quand une cellule est en mode edition (quand l'utilisateur tape du texte). Si c'est le cas il te faut peut être ecrire ta propre textbox cell + editing control et intercepter les Keys sur le editing control ou les

    Alternativement, tu peux essayer d'intercepter l'événement CellValidating et changer les "." en ",".

    de manière générale il vaut mieux ne pas combattre le systeme en essayant d'alterer ce genre de comportements, l'utilisateur est habitué à ses parametres régionaux et ce n'est que de l'affichage. C'est quand ton code utilise la valeur entrée par l'utilisateur que tu devrais t'assurer que le format est compatible avec les opérations que tu fais...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    674
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 674
    Points : 1 176
    Points
    1 176
    Par défaut
    Bonjour,
    une solution parmi d'autres.
    Ce qui donne :
    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
        Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) _
        Handles DataGridView1.EditingControlShowing
     
            AddHandler e.Control.KeyDown, AddressOf control_KeyDown
     
        End Sub
     
        Private Sub control_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
     
            If e.KeyData = Keys.Decimal Then
                Dim _IsDecimalPressed = True
                TextBox1.AppendText("_IsDecimalPressed" & Environment.NewLine)
            End If
     
        End Sub

Discussions similaires

  1. Touche Entr du pavé numérique
    Par CmzxNene dans le forum WinDev
    Réponses: 5
    Dernier message: 02/08/2010, 13h12
  2. Réponses: 6
    Dernier message: 06/01/2010, 14h48
  3. Réponses: 0
    Dernier message: 20/03/2009, 11h44
  4. Transformer le point du pavé numérique en virgule
    Par SurfingJeff dans le forum Langage
    Réponses: 4
    Dernier message: 04/11/2008, 10h58
  5. [OpenOffice] le point du pavé numérique ne s'affiche pas
    Par sidahmed dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 27/08/2007, 16h45

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