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 :

Remplacer point par virgule automatiquement partout (semi-réponse)


Sujet :

VB.NET

  1. #41
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Si tu regarde le code que je t'ai posté au début attentivement, tu verra que j'ai mixé les "." et "," exprès pour te montrer que cela n'avait pas d'importance dès lors que l'on utilisé le CulturInvariant lors du parsing.
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  2. #42
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Tu comprends pas... quand tu fais le calcules, c'est trop tard !

    Le pas à pas, c'est pour quand tu tapes le Point, pour voir pourquoi il n'est pas remplacé par la virgule.
    C'est ça que tu cherches a debugger... On le sait déjà que le calcule ne marche pas....
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #43
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Mets un breakpoint(F9) à ta ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub PointEnVirgule(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs)
    lance ton prog et tape le pavé numerique dans un des textbox
    est ce que le debugger s'arrete au point d'arret ?

  4. #44
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Suit avec les points d'arrêt comme indiqué par mactwist69 et shayw

    Sinon, si tu as du mal, fait un test sur un form vierge.

    Ajoute ce code
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
        Sub InitControl()
            Dim txt As TextBox
            Dim gb As GroupBox
            Dim gb2 As GroupBox
            ' un textbox
            txt = New TextBox
            txt.Name = "txt1"
            txt.Location = New Point(10, 20)
            ' un groupbox
            gb = New GroupBox
            gb.Name = "gb1"
            gb.Location = New Point(10, 10)
            gb.Height = 300
            gb.Width = 500
            gb.BackColor = Color.LemonChiffon
            gb.Text = "1er"
            ' un groupbox pour imbriquer
            gb2 = New GroupBox
            gb.Name = "gb2"
            gb2.Location = New Point(10, 60)
            gb2.Height = 100
            gb2.Width = 200
            gb2.Text = "2ème inclus"
            gb2.BackColor = Color.LightBlue
            ' ajout du textbox dans gb2
            gb2.Controls.Add(txt)
            ' ajout du gb2 dans gb1
            gb.Controls.Add(gb2)
            ' un nouveau textbox
            txt = New TextBox
            txt.Name = "txt2"
            txt.Location = New Point(10, 20)
            ' ajout du textbox dans gb1
            gb.Controls.Add(txt)
            ' ajout de gb1 dans la form
            Me.Controls.Add(gb)
        End Sub
    Dans le load de la form rajoute ces 2 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                InitControl() ' cré texbox et groupbox
                Outils.SetEventTxtsKeyPress(Me) ' ajoute les events keypressed sur les textbox
    Toujours avec la classe outil
    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
    Public Class Outils
        Public Shared Sub SetEventTxtsKeyPress(conteneur As Control)
            For Each ctrl As Control In conteneur.Controls  ' parcour de la collection des contrôles du conteneur
                Select Case True                            ' select sur true (condition vrai), qui sera vérifié sur chaque case si "ctrl" correspond au type de controle 
                    Case TypeOf ctrl Is TextBox
                        AddHandler ctrl.KeyPress, AddressOf OnPointEnVirgule
                    Case TypeOf ctrl Is Panel, TypeOf ctrl Is GroupBox
                        SetEventTxtsKeyPress(ctrl) ' traite les conteneurs enfants (récursif)
                End Select
            Next
        End Sub
        Public Shared Sub OnPointEnVirgule(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs)
            e.Handled = (e.KeyChar = ".") ' traite exclusivement le point : <== mettre un point d'arrêt 
            If e.Handled Then TryCast(sender, TextBox).AppendText(",") ' rajoute une virgule (ne pas mettre cette ligne si l'on ne veut rien faire à la place, l'utilisateur devra utiliser la virgule)
        End Sub
    End Class
    tu verras ainsi le fonctionnement et pourra le reproduire dans ton code (prend bien tout le code de ce post pour tester)


    [Edit] Complément
    tu peux même simplifier OnPointEnVirgule ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Public Shared Sub OnPointEnVirgule(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs)
            If (e.KeyChar = ".") Then e.KeyChar = "," ' transformation directe du point en virgule
        End Sub
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #45
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Pour être sur de toute façon je le répétè tu peut parser ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim val1 As String
            Dim val2 As String
     
            val1 = "1.03"
            val2 = "3,5"
     
            Dim res1 As Double
            Dim res2 As Double
     
            Double.TryParse(val1, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, res1)
     
            Double.TryParse(val1, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.InvariantCulture, res2)
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  6. #46
    Membre du Club Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 58
    Points
    58
    Par défaut
    Merci pour toutes vos réponses, je teste tout ce que vous m'avez donné et je vous redis !
    Merci pour l'exemple rv26t parce qu'en effet, j'ai du mal
    Détaillez votre question et vous obtiendrez une réponse précise ! (c'est un peu magique)
    Et si vous êtes fou de voyage bienvenue ici : http://lenormanditinerant.blogspot.fr

  7. #47
    Membre du Club Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 58
    Points
    58
    Par défaut
    YEEEEEEAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH !!!!!

    Alors pourquoi ça ne marchait pas ? Parce que mes controles étaient dans des groupbox, dans des panel mais aussi dans un grand Tabcontrol !!!
    du coup je l'ai rajouté dans la classe outils et zou !

    Vous êtes mes Sherlock, mes génies, mes héros, mes dieux !!

    Merciiiii merci merciiiii plein plein de fois =D

    (vous me reverrez surement je crois que j'aurai d'autres probleme à resoudre... )
    Détaillez votre question et vous obtiendrez une réponse précise ! (c'est un peu magique)
    Et si vous êtes fou de voyage bienvenue ici : http://lenormanditinerant.blogspot.fr

  8. #48
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    De rien, pense à marquer en résolue avec le bouton en bas

    Et utilise bien cette méthode, elle placera la virgule quelle que soit la position du curseur lors de la saisie. (au cas ou l'utilisateur revient en arrière avec les flèches ou la souris)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Public Shared Sub OnPointEnVirgule(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs)
            If (e.KeyChar = ".") Then e.KeyChar = "," ' transformation directe du point en virgule
        End Sub
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  9. #49
    Membre du Club Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 58
    Points
    58
    Par défaut
    Très bien chef ! En effet ça peut etre utile !
    Détaillez votre question et vous obtiendrez une réponse précise ! (c'est un peu magique)
    Et si vous êtes fou de voyage bienvenue ici : http://lenormanditinerant.blogspot.fr

  10. #50
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Il faut marquer comme résolue... en bas de cette page, à gauche... un bouton vert...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  11. #51
    Membre du Club Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par mactwist69 Voir le message
    Il faut marquer comme résolue... en bas de cette page, à gauche... un bouton vert...
    Je suis au boulot et ils ont internet explorer et devinez quoi ... il bug, y'a aucun bouton "résolu" .. je le fais chez moi en rentrant, promi !
    Détaillez votre question et vous obtiendrez une réponse précise ! (c'est un peu magique)
    Et si vous êtes fou de voyage bienvenue ici : http://lenormanditinerant.blogspot.fr

  12. #52
    Membre du Club Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    Je me permet de re-ouvrir ce sujet car ma classe Outils (permettant de taper une point et de générer une virgule, code ci-après) fonctionne sur tous mes contrôles sauf dans les cellules de mon DataGridView, alors je m'empresse d'ajouter le "typeof ctrl" mais j'essaie tout un tas de nom de controle pour signifier les cellules du datagridview mais rien y fait :/

    Quelqu'un saurait-il comment ajouter cela ?

    Voci le code :

    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
    Public Class Outils
        Public Shared Sub SetEventTxtsKeyPress(ByVal conteneur As Control)
            For Each ctrl As Control In conteneur.Controls  ' parcour de la collection des contrôles du conteneur
                Select Case True                            ' select sur true (condition vrai), qui sera vérifié sur chaque case si "ctrl" correspond au type de controle 
                    Case TypeOf ctrl Is TextBox
                        AddHandler ctrl.KeyPress, AddressOf OnPointEnVirgule
                    Case TypeOf ctrl Is DataGridView        ' marche pas ...
                        AddHandler ctrl.KeyPress, AddressOf OnPointEnVirgule
                    Case TypeOf ctrl Is Panel, TypeOf ctrl Is GroupBox, TypeOf ctrl Is TabPage, TypeOf ctrl Is TabControl, TypeOf ctrl Is DataGridView  ' marche pas ..
                        SetEventTxtsKeyPress(ctrl) ' traite les conteneurs enfants (récursif)
                End Select
            Next
        End Sub
     
     
        Public Shared Sub OnPointEnVirgule(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
            If (e.KeyChar = ".") Then e.KeyChar = "," ' transformation directe du point en virgule
        End Sub
    End Class
    Détaillez votre question et vous obtiendrez une réponse précise ! (c'est un peu magique)
    Et si vous êtes fou de voyage bienvenue ici : http://lenormanditinerant.blogspot.fr

  13. #53
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Peut être parce que le controle dans lequel tu ajoute le texte n'est pas une DataGridView mais quelque chose comme une DataGridViewCell
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  14. #54
    Membre du Club Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 58
    Points
    58
    Par défaut
    et bien je ne pense pas non, mais j'ai essayé tous les truc que je pouvais il met souvent une erreur comme quoi le type n'est pas compatible etc ..
    Détaillez votre question et vous obtiendrez une réponse précise ! (c'est un peu magique)
    Et si vous êtes fou de voyage bienvenue ici : http://lenormanditinerant.blogspot.fr

  15. #55
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Ainsi :
    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
        Public Shared Sub SetEventTxtsKeyPress(conteneur As Control)
            For Each ctrl As Control In conteneur.Controls  ' parcour de la collection des contrôles du conteneur
                Select Case True                            ' select sur true (condition vrai), qui sera vérifié sur chaque case si "ctrl" correspond au type de controle 
                    Case TypeOf ctrl Is TextBox
                        AddHandler ctrl.KeyPress, AddressOf OnPointEnVirgule
                    Case TypeOf ctrl Is Panel, TypeOf ctrl Is GroupBox
                        SetEventTxtsKeyPress(ctrl) ' traite les conteneurs enfants (récursif)
                    Case TypeOf ctrl Is DataGridView
                        AddHandler DirectCast(ctrl, DataGridView).EditingControlShowing, AddressOf DGV_EditingControlShowing
                End Select
            Next
        End Sub
        Public Shared Sub OnPointEnVirgule(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs)
            'e.Handled = (e.KeyChar = ".") ' traite exclusivement le point
            If (e.KeyChar = ".") Then e.KeyChar = ","
        End Sub
     
        Public Shared Sub DGV_EditingControlShowing(sender As System.Object, e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs)
            RemoveHandler e.Control.KeyPress, AddressOf Outils.OnPointEnVirgule
            AddHandler e.Control.KeyPress, AddressOf Outils.OnPointEnVirgule
        End Sub
    Attention je n'ai pas mis le tabcontrol dans la récusivité sur les conteneurs.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  16. #56
    Membre du Club Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Points : 58
    Points
    58
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Shared Sub DGV_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs)
    La vache ! Celui-là fallait le deviner !

    T'es mon Dieu, c'est tout.
    Détaillez votre question et vous obtiendrez une réponse précise ! (c'est un peu magique)
    Et si vous êtes fou de voyage bienvenue ici : http://lenormanditinerant.blogspot.fr

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [WD19] Evenement clavier remplacement point par virgule
    Par Fred 57220 dans le forum WinDev
    Réponses: 8
    Dernier message: 26/03/2014, 21h03
  2. [XL-2007] remplacement de point en virgule automatiquement dans une macro
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/10/2010, 12h34
  3. [MySQL] Remplacement point par virgule
    Par helios399 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/04/2009, 13h15
  4. Remplacement Point par Virgule.
    Par Geraldvi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/11/2008, 09h27
  5. [DELPHI WIN32] Remplacer points par virgules
    Par manubrard dans le forum Langage
    Réponses: 3
    Dernier message: 28/03/2006, 15h02

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