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 :

utilisation point pavé numérique dans datagridview [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2012
    Messages : 44
    Par défaut utilisation point pavé numérique dans datagridview
    Bonjour,
    Ce programme permet de pouvoir utiliser le point du pavé numérique car cela le remplace par une virgule.
    Avec le labelb2 cela marche nickel, maintenant je voudrais l'adapter aux valeurs entrées dans le datagridview ici la colonne : (datagridview1.rows().cells(Coefficientimpermeabilisation)) mais je ne trouve pas comment faire. L'erreur est donc seulement dans les 2 premières private sub.

    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
    Private Const K_FILTRE_DOUBLE As String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890,.-+*/\()!:;"
     
        Private Sub DataGridView1.Rows().Cells("Coefficientimpermeabilisation").Value_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles DataGridView1.Rows().Cells("Coefficientimpermeabilisation").Value.KeyPress
            filtrerFrappe(sender, e, K_FILTRE_DOUBLE)
        End Sub
     
        Private Sub DataGridView1.Rows().Cells("Coefficientimpermeabilisation").Value_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.Rows().Cells("Coefficientimpermeabilisation").Value.KeyUp
            CType(sender, TextBox).Text = CType(sender, TextBox).Text.Replace(".", ",")
            CType(sender, TextBox).SelectionStart = CType(sender, TextBox).Text.Length
        End Sub
     
        Private Sub Labelb2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Labelb2.KeyPress
            filtrerFrappe(sender, e, K_FILTRE_DOUBLE)
        End Sub
     
        Private Sub Labelb2_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Labelb2.KeyUp
            CType(sender, TextBox).Text = CType(sender, TextBox).Text.Replace(".", ",")
            CType(sender, TextBox).SelectionStart = CType(sender, TextBox).Text.Length
        End Sub
     
        Private Sub filtrerFrappe(ByRef txtCourant As TextBox, ByRef e As System.Windows.Forms.KeyPressEventArgs, ByVal sFiltre As String)
            Dim bFiltrer As Boolean = False
            Dim cFrappe As String = e.KeyChar
            If cFrappe = "." Then cFrappe = ","
            bFiltrer = (sFiltre.IndexOf(cFrappe) = -1)
            If cFrappe = "," Then
                If txtCourant.Text.IndexOf(cFrappe) <> -1 Then
                    bFiltrer = True
                Else
                    bFiltrer = (txtCourant.Text.Length = 0)
                End If
            End If
            If cFrappe = ControlChars.Back Then bFiltrer = False
            e.Handled = bFiltrer
        End Sub
    Voila mon message d'erreur :
    DataGridView1 est déjà déclaré en tant que Friend WithEvents DataGridView1 As System.Windows.Forms.DataGridView dans ce class
    Merci.

  2. #2
    Membre Expert 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 : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    bonjour,

    Tu as remarquer que sur tes des évènements tu as le même Handles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Handles DataGridView1.Rows().Cells("Coefficientimpermeabilisation").Value.KeyUp

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2012
    Messages : 44
    Par défaut
    Oui, pourquoi? il ne faut pas?
    J'ai toujours mis la même chose jusqu'à présent et cela fonctionnait.
    Sa signifie quoi le handles?
    Je dois mettre quoi à la place du coup?
    Merci

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2012
    Messages : 44
    Par défaut
    Salut,
    J'ai modifié la partie qui ne fonctionnait pas comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ValeurCI_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
            Dim ValeurCI As Double = Convert.ToDouble(Me.DataGridView1.Rows(1).Cells("Coefficientimpermeabilisation").Value)
            filtrerFrappe(sender, e, K_FILTRE_DOUBLE)
        End Sub
     
        Private Sub ValeurCI_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) 
            CType(sender, TextBox).SelectionStart = CType(sender, TextBox).Text.Length
        End Sub
    Je n'es pas d'erreur mais cela ne fonctionne toujours pas. Le point du pavé numérique n'est pas remplacé par une virgule.

  5. #5
    Membre Expert 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 : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Le Handles est une sorte de pointeur sur ta fonction.
    Normalement tu n'as pas a y toucher!

    Si dans ton interface tu souhaites faire un évènement sur le key_up de ton datagridview, dans ton code, tu sélectionne ton datagridview, et dans la liste des évènement tu sélectionnes Key_up.

    Il va te créer la structure de ta fonction tout seul (nom, argument et Handles). Il le fait très bien, et on ne devrait pas créer un handles soit même à moins de s'y connaitre vraiment.

    Apparement ton Handles permet de préciser la cellule dans laquelle l'évènement va se déclencher.

    Donc mon conseil, mets le contenu de ton code de coté, efface tes procédures et recréer les de manière propre.
    Si tu souhaites que ton code ne s'execute que si le key_up était fait depuis une certaine colonne, qu'a cela ne tienne, la première chose que tu vas faire dans ta procédure, c'est de tester la colonne active, et en fonction de ça tu lances ton code.

    Pourquoi réinventer la roue, alors que VB.NET a tout préparé

  6. #6
    Membre Expert 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 : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Non ton test est "faux"... car dans l'évènement Key_Press ou Key_up, la valeur n'est pas encore saisie dans la cellule, donc tu ne peux pas la récupérer dans ta cellule...

    Par contre, la touche appuyé est dans l'argument de ta fonction e.

    Donc tu peux faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ValeurCI_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
     
          If e.KeyChar = "." Then e.KeyChar = CType(",", Char)
     
    End Sub

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2012
    Messages : 44
    Par défaut
    Merci pour vos réponses.
    Mais malheuresement cela ne marche pas.

    Si dans ton interface tu souhaites faire un évènement sur le key_up de ton datagridview, dans ton code, tu sélectionne ton datagridview, et dans la liste des évènement tu sélectionnes Key_up.
    Quand je fais cela, sa ne marche pas non plus, puis je ne voudrais pas sélectionner le datagriview mais les valeurs des cellules et on ne peut pas sélectionner cela.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/04/2014, 10h52
  2. Réponses: 6
    Dernier message: 06/01/2010, 14h48
  3. [OpenOffice][Texte] writer point pavé numérique
    Par andeve dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 26/11/2008, 11h32
  4. [d7]pavé numérique point et virgule
    Par dleu dans le forum Langage
    Réponses: 8
    Dernier message: 28/04/2006, 03h23
  5. Réponses: 7
    Dernier message: 06/11/2005, 14h47

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