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

C# Discussion :

DatagridView textBox bloquer caractères [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut DatagridView textBox bloquer caractères
    Bonjour,

    J'ai une DataGridView qui contient plusieurs colonnes dont quelques unes avec des texbox.
    Je voudrais que les cellules de ces colonnes ne contiennent que des numériques, mais qui acceptent aussi la virgule, donc du style : " 1,129"

    j'ai tenté avec le Keypress mais ça ne fonctionne pas.

    Merci.

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    tu peux montrer ta fonction keypress stp?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    J'ai oublié pke je l'ai effacé depuis un moment

    mais ça devait être de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private void datagridview1_KeyPress(object sender, KeyPressEventArgs e)
    {
    if(e.KeyChar == 'A')
    MessageBox.show("caractère");
    }

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    donc attend, si j'ai bien compris ton premier message, tu souhaites mettre dans ton DataGridView les valeurs de tes textbox qui doivent être des chiffres ou la virgule.
    C'est bien ça?

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    oui je veux que des chiffres et une virgule
    donc je voudrais savoir quand une lettre ou un caractère spécial est tapé dans la textbox

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2009
    Messages : 38
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    Essaie cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void datagridview1_KeyPress(object sender, KeyPressEventArgs e)
    {
    //Pour le 'A'
    if(e.KeyChar == (char)65)
    MessageBox.show("caractère");
    }
     
    //Pour le 'a'
    if(e.KeyChar == (char)97)
    MessageBox.show("caractère");
    }

    Cdt,
    Si le post est utile, n'oubliez pas le
    Si les membres ont répondu à votre question n'oubliez pas de mettre en

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    alors ta fonction keypress doit être comme ceci :
    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
    touche = Convert.ToInt16(e.KeyChar);//Récupère le code ASCII de la touche enfoncée
                //Si la touche enfoncée est un chiffre ou la virgule
                if ((touche >= 48 && touche <= 57) || touche == 44)
                {
                    textbox.Text += e.KeyChar.ToString();
                }
                else
                {
    		//Si l'utilisateur appui sur la touche retour en arrière et qu'il y a quelque chose dans le textbox
                    if (touche == 8 && textbox.Text.Length > 0)
                    {
                        textbox.Text = textbox.Text.Remove(textbox.Text.Length - 1);
                    }
                    else MessageBox.Show("Impossible d'ajouter ce caractère", "Touche appuyée", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                //Pour marquer l'évènement comme géré
                e.Handled = true;
                //Pour mettre le curseur à la fin
                textbox.SelectionStart = textbox.Text.Length;

  8. #8
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci, je vais essayer

  9. #9
    Invité
    Invité(e)
    Par défaut
    tu as regardé, du coté des expressions régulière, avec un validator sur la textbox en question? Cela évite d'intercepter tous les événements "keyPress" et de vérifier la touche pressé.

  10. #10
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Patmat44 pourrai-je faire ta méthode avec l'évènement "PreviewKeyDown" ??
    Pour que l'évent réagisse dès qu'on n'appui pas sur une bonne touche

    Sinon oui ta méthode marche !!
    j'avais juste pas les bons numéros de touches pour les touches numériques

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    je pense que ça doit marcher aussi

  12. #12
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    ça fonctionne, mais question bête :
    le message d'erreur s'affiche mais une fois fermer il m'écrit la lettre dans la case, c'est possible qu'elle ne soit pas écrite?

  13. #13
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 196
    Points : 197
    Points
    197
    Par défaut
    avec l'évènement PreviewKeyDown je pense pas car tu as déjà appuyé sur la touche.
    alors fait un truc du genre :
    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
     
    String temp=String.Empty;
    //Puis dans ton évènement
    touche = Convert.ToInt16(e.KeyChar);//Récupère le code ASCII de la touche enfoncée
                //Si la touche enfoncée est un chiffre ou la virgule
                if ((touche >= 48 && touche <= 57) || touche == 44)
                {
                    temp += e.KeyChar.ToString();
                }
                else
                {
    		//Si l'utilisateur appui sur la touche retour en arrière et qu'il y a quelque chose dans le textbox
                    if (touche == 8 && textbox.Text.Length > 0)
                    {
                        temp = textbox.Text.Remove(textbox.Text.Length - 1);
                    }
                    else MessageBox.Show("Impossible d'ajouter ce caractère", "Touche appuyée", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                textbox.text=temp;
                //Pour marquer l'évènement comme géré
                e.Handled = true;
                //Pour mettre le curseur à la fin
                textbox.SelectionStart = textbox.Text.Length;
    sauf si quelqu'un à la réponse

  14. #14
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    La variable tmp ne fonctionne pas, enfin la valeur de ma cellule est bien vide mais pas à l'affichage mais ce n'est pas grave. merci pour tout

  15. #15
    Membre à l'essai
    Femme Profil pro
    Non actif
    Inscrit en
    Août 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Non actif

    Informations forums :
    Inscription : Août 2010
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Dans l'évènement KeyPress :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar="a" Then e.KeyChar = ""
        If e.KeyChar="A" Then e.KeyChar = ""
        ...
    End Sub

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

Discussions similaires

  1. TextBox sans caractères spéciaux
    Par majduuus dans le forum ASP.NET
    Réponses: 1
    Dernier message: 05/09/2013, 11h43
  2. [Débutant] DatagridView Affichage des caractères spéciaux
    Par anissa2 dans le forum VB.NET
    Réponses: 3
    Dernier message: 15/11/2012, 17h54
  3. Réponses: 3
    Dernier message: 20/08/2012, 17h35
  4. dataGridView textBox Numerique
    Par TrollTop dans le forum C++/CLI
    Réponses: 1
    Dernier message: 07/06/2009, 14h13

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