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 :

[C# 2.0] DataGridView : une colonne qui accepte uniquement des numériques


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut [C# 2.0] DataGridView : une colonne qui accepte uniquement des numériques
    Bonjour à tous,

    J'ai un petit souci avec le composant DatagridView.

    En fait j'ai un datagridview avec plusieures colonnes et lignes.

    Une certaine colonne qui est de type textebox ne doit accepter que des numériques entre 1 et 5.

    Seulement, je ne trouve pas comment faire
    Les events du datagrid sur les Key se déclanche lorsque l'on est sur le datagridview mais plus dans la textbox en elle même...

    Sinon j'ai éssayé d'aller voir dans les propriétés de ma colonne, de mettre maxlength à 1.
    Dans DefaultCellStyle, j'ai mis un numérique, sans chiffre apres virgule, mais au final il ne vérifie meme pas si c est un numérique.


    Je me perd dans les propriétés de propriétés, et je n'ai trouvé aucuns event qui se lance lors du keydown dans ma colonne...

    Quelqu'un saurait m'éclairer sur ce composant?

    Meurchi,

    Frechy

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Points : 269
    Points
    269
    Par défaut
    Salut j'ai eu le même probleme .
    Je sais pas si ce que je fait est très "Pro" mais en tout cas je test simplement la valeur que je recupere sur l'event "CellValueChange"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try
    {
          if (e.ColumnIndex == 4) LeNoyau.Protocol.TempsEntreDeuxTrames = int.Parse(LaCellule.Value.ToString());
    }
    catch (FormatException)
    {
           MessageBox.Show("Attention Vous devez entrer une valeur Numerique               !","Attention", MessageBoxButtons.OK,MessageBoxIcon.Warning);
     
           if (e.ColumnIndex == 4) LaCellule.Value = 0;
     
    }
    Faut tester le numero de la colonne choisie pour être sûre que tu test la bonne colonne et après fait ton test dans le Try. Le catch te permettra de récupérer si l'utilisateur met un charactere ou si il y a un probleme de cast.

    Si tu as une meilleure solution je suis prenneur.

    Bonne chance

  3. #3
    Membre éclairé Avatar de zeavan
    Architect
    Inscrit en
    Avril 2003
    Messages
    590
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Autre

    Informations professionnelles :
    Activité : Architect

    Informations forums :
    Inscription : Avril 2003
    Messages : 590
    Points : 774
    Points
    774
    Par défaut
    et que pense tu de creer ton propre control qui heriterait du textbox control et de l'utiliser dans ton datagridview ??

  4. #4
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    Biloutor: Ce n'est pas exactement ce que je cherche à faire. Je souhaite vraiment interdire tout ce qui ne se trouve pas entre 0 et 5 lors de l'encodage.

    De plus, une fois le numérique encodé, la cellule sélectionnée doit automatiquement passer à la ligne suivante.

    zeavan: Il s'agit déjà d'un textbox dans les colonnes

    Frenchement s'il n'y a pas moyen de faire ce simple traitement avec les centaines de propriétés/events que possede ce composant


    Allez je continue à chercher

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Points : 269
    Points
    269
    Par défaut
    En appli Web ca s'appel des rangeValidator ton objet. Mais malheureusement ce composant n'a pas l'air d'exister en appli Windows. Je te conseillerais d'effectuer le test dans l'event Validating qui doit correspondre.

    Sinon a Voir si Value Type peux être utiliser dans ce cas la. Il doit falloire creuser dans cette direction peut être.

    Bonne chance en tout cas

  6. #6
    Membre confirmé
    Avatar de frechy
    Inscrit en
    Novembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2004
    Messages : 343
    Points : 511
    Points
    511
    Par défaut
    Voilà j'ai trouvé

    tout d'abord j'ai disablé l'edition sur le datagridview.

    Ensuite, lors du KeyDown:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int num = e.KeyValue;
    num -= 48;
    if (num > 0 && num < 6)
    {
    dataGridViewEncodManuel.Rows[dataGridViewEncodManuel.SelectedCells[0].RowIndex].Cells[dataGridViewEncodManuel.SelectedCells[0].ColumnIndex].Value = num;
    }
    Et voilou ca fonctionne

    A oui et j'ai mis cette colone dans un nouveau datagridview, comme celà les autre colonnes peuvent toujours être éditées

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

Discussions similaires

  1. INDEX sur une colonne qui peut être NULL
    Par dorian53 dans le forum Requêtes
    Réponses: 15
    Dernier message: 29/11/2007, 17h13
  2. Texte dans une colonne qui déborde!
    Par pracede2005 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/11/2007, 22h11
  3. Réponses: 1
    Dernier message: 18/04/2007, 13h39
  4. Modifier une colonne qui possède une contrainte DEFAUT
    Par David.V dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/01/2007, 11h35
  5. Réponses: 2
    Dernier message: 10/12/2006, 13h32

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