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 :

[2.0 DataGridView] comment sélectionner une cellule par le code


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut [2.0 DataGridView] comment sélectionner une cellule par le code
    Je souhaite interdire l'édition dans certaines cellules d'un DataGridView.
    (dans certains cellules, pas seulement dans des colonnes).

    j'ai donc écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private void Grid1_CellEnter(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex == 0 && (e.ColumnIndex == this.colFreq.Index ||
                                        e.ColumnIndex == this.colMoy.Index ||
                                        e.ColumnIndex == this.colMax.Index ))
                {
                      this.Grid1.CurrentCell = this.Grid1[this.colSaisie.Index, e.RowIndex);
                }
     
            }
    Seulement pas de bol, ça ne fonctionne pas, j'obtiens :
    "L'opération n'est pas valide, car elle se traduit par un appel réentrant à la fonction SetCurrentCellAdessCore".
    ????

    alors que j'ai vérifié, les collections Rows et Cells sont tout à fait compatibles ave les valeurs passées.

    J'ai par ailleur essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.Grid1.CurrentCell = this.Grid1.Rows[e.RowIndex].Cells[this.colSaisie.Index];
    et c'est pareil...

    de l'aide SVP !!!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut
    en désespoir de cause dans l'evt CellEnter, j'ai lancé un Timer.
    et à échéance de ce dernier je fais le traitement.

    Décidemment le temps réel et Microsoft ça fera toujours 2.
    s'il font un jor coler des avions, dites le moi, je me mets à la spéléo...
    entre l'ordre des événements non respecté, les valeurs de variables non mises à jour dans les événements conséquence des changements et maintenant les réentrances bidons... Hum !!! je ne ferais pas plus de commentaires.

  3. #3
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    La dgv est loin d'être parfaite, c'est sûr, mais le microsoft-bashing fera pas marcher ton appli

    La propriété Readonly de la DataGridViewCell ne te convient pas ?

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    Je souhaite interdire l'édition dans certaines cellules d'un DataGridView. (dans certains cellules, pas seulement dans des colonnes).
    La solution la plus simple serait de jouer dynamiquement sur la propriété Read-Only des colonnes sur le RowEnter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private void Grid1_RowEnter(object sender, DataGridViewCellEventArgs e)
    {
      if (e.RowIndex >0) 
      {
        this.Grid1.Columns["MyCol1"].readOnly= /* ma condition pour MyCol1*/
        this.Grid2.Columns["MyCol2"].readOnly= /* ma condition pour MyCol2*/
        ...
      }
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut
    merci Graffito, mais justement je ne souhaite pas bloquer la totalité des colonnes, seulement certaines cellules...
    il me semblait que je l'avais écrit...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 120
    Par défaut
    mais en effet la propriété ReadOnly appliquée à la cellule pourrait être une bonne solution merci.

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

Discussions similaires

  1. [XL-2010] Comment renseigner une cellule par un certain nombre de caractère ?
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/04/2015, 13h38
  2. [XL-2007] sélectionner une cellule dans un code au lieu d'une colonne
    Par manuseverine dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/09/2010, 21h42
  3. Comment déclencher une exception par du code
    Par visiwi dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 09/06/2008, 18h06
  4. insérer une fonction dans une cellule par le code
    Par RemiT dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/09/2007, 16h15
  5. [TStringGrid] Comment sélectionner une cellule ?
    Par zidenne dans le forum Composants VCL
    Réponses: 1
    Dernier message: 18/11/2005, 10h45

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