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 :

Comment limiter le cocher/décocher de CheckBox à une seule colonne d'un DataGridView en WinForm?


Sujet :

C#

  1. #1
    Membre expérimenté Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Points : 1 474
    Points
    1 474
    Par défaut Comment limiter le cocher/décocher de CheckBox à une seule colonne d'un DataGridView en WinForm?
    Bonjour à tous,

    Je pose le décor:
    - J'ai une interface en WinForm qui crée en programation dynamique des DataGridView à partir de données venant d'un fichier Excel.
    - La première colonne de chacun des DataGrid est composée de CheckBox, le reste des colonnes contenant du texte et des nombres.

    Problème: comment limiter l'action de cocher/décocher les CheckBox UNIQUEMENT à leur colonne?? Car pour l'instant quand je double-clic sur certaines colonnes d'une ligne donnée, cela coche (ou décoche) la CheckBox qui est dans la 1ère colonne!!!

    EDIT: cela se produit aussi parfois en simple clic...

    Merci d'avance!
    L'homme sage apprend de ses erreurs, l'homme plus sage apprend des erreurs des autres. - Confucius -

    Ma (petite...) chaine Youtube : https://www.youtube.com/channel/UCy-...P2tH5UwOtLaYKw
    Si vous avez quelques minutes, passez donc voir mon site http://www.photospicsandco.fr/
    Envie de tee-shirts (et goodies!) originaux et sympa ? Visitez mon site... http://www.zazzle.com/shkyo30

  2. #2
    Membre expérimenté Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Points : 1 474
    Points
    1 474
    Par défaut
    Personne n'a d'idée sur ce problème?

    J'aimerais bien savoir si il existe un système plus ou moins simple de faire ça avant de me lancer dans des interceptions de simple et double clics...
    L'homme sage apprend de ses erreurs, l'homme plus sage apprend des erreurs des autres. - Confucius -

    Ma (petite...) chaine Youtube : https://www.youtube.com/channel/UCy-...P2tH5UwOtLaYKw
    Si vous avez quelques minutes, passez donc voir mon site http://www.photospicsandco.fr/
    Envie de tee-shirts (et goodies!) originaux et sympa ? Visitez mon site... http://www.zazzle.com/shkyo30

  3. #3
    Membre expérimenté Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Points : 1 474
    Points
    1 474
    Par défaut
    Bon, après m'être replongé dans ce problème, j'ai opté pour l'ajout d'une gestion des clics, voici ma solution pour ceux que ça pourra intéresser un jour!

    J'utilise ça pour l'abonnement aux évènements :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myDataGridView.CellContentClick += DGVCellContentClick;
    Puis ensuite:
    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
            private void DGVCellContentClick(object sender, DataGridViewCellEventArgs evt)
            {
                DataGridView myDGVTemp = sender as DataGridView;
     
                int indexLigneCelluleClick = myDGVTemp.CurrentCell.RowIndex;
                int indexColonneCelluleClick = myDGVTemp.CurrentCell.ColumnIndex;
     
                if ((indexLigneCelluleClick > 0) && (indexColonneCelluleClick == 0))
                {
                    // -- extraction du n° de DataGridView pour avoir le bon indice dans les listes ------------
                    int numDGV = -1;
                    Match resultRegex = Regex.Match(myDGVTemp.Name, @"\d+");
                    if (resultRegex.Success)
                    {
                        numDGV = Convert.ToInt16(resultRegex.Value.ToString());
                    }
     
                    bool valeurTemp = (bool)myDGVTemp.Rows[myDGVTemp.CurrentRow.Index].Cells[0].Value;
     
                    if (!valeurTemp)
                    {
                        myDGVTemp.Rows[myDGVTemp.CurrentRow.Index].Cells[0].Value = true;
                        listeNbreCBChecked[numDGV].nbreEnCours++;
                    }
                    else if (valeurTemp)
                    {
                        myDGVTemp.Rows[myDGVTemp.CurrentRow.Index].Cells[0].Value = false;
                        listeNbreCBChecked[numDGV].nbreEnCours--;
                    }
     
                }
            }
    Mon code peut vous paraître étrange, mais en fait je génère le nombre de DataGridView dont j'ai besoin car c'est une interface WinForm dynamique, et je les stocke dans une liste, et pour un autre traitement je suis également le nbre de cases cochées ou non...
    L'homme sage apprend de ses erreurs, l'homme plus sage apprend des erreurs des autres. - Confucius -

    Ma (petite...) chaine Youtube : https://www.youtube.com/channel/UCy-...P2tH5UwOtLaYKw
    Si vous avez quelques minutes, passez donc voir mon site http://www.photospicsandco.fr/
    Envie de tee-shirts (et goodies!) originaux et sympa ? Visitez mon site... http://www.zazzle.com/shkyo30

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

Discussions similaires

  1. [AC-2007] Comment limiter le nombre d'enregistrements dans une table
    Par arabi91 dans le forum Modélisation
    Réponses: 6
    Dernier message: 24/03/2012, 12h25
  2. [AC-2003] Comment limiter le nombre de selections d'une ListeBox ?
    Par maringot dans le forum IHM
    Réponses: 2
    Dernier message: 15/03/2010, 17h01
  3. [CR 9.0]Comment limiter le nombre d'enregistrements sur une page
    Par popol666 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 06/11/2006, 16h27
  4. Comment limiter la durée d'utilisation d'une appli
    Par le lynx dans le forum Access
    Réponses: 2
    Dernier message: 26/06/2006, 17h23
  5. Comment cocher/décocher plusieurs "checkbox"?
    Par Crazynoss dans le forum ASP
    Réponses: 2
    Dernier message: 16/05/2005, 00h38

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