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 :

Selection mulltiple de rows dans un datagridview sans toucher a shift ni a ctrl


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut Selection mulltiple de rows dans un datagridview sans toucher a shift ni a ctrl
    Bonjour a toutes et a tous

    Je cherche un moyen de pouvoir sélectionner plusieurs lignes dans un datagridview, mais sans toucher a shift ou a ctrl.
    Je veux qu'en cliquant sur une ligne => ça la selectionne en bleu
    Je reclique dessus => ça la déselectionne
    et tout ça indépendament des autres lignes.

    J'ai essayé en vain de gérer les évenements de clics, mais mes actions interfèrent avec la selection "naturelle" qui est effectuée par le datagridview.

    Si quelqu'un a une solution, je suis preneur.

    D'avance merci pour vos réponses

    A+

  2. #2
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Salut.

    Je pense que le plus simple est de rajouter une colonne de CheckBoxes...

    Comme ça tu peux sélectionner/déséléctionner à volonté ^^

    Par contre pour géré le fait que ce soit coché, c'est hyper compliqué, j'ai eu à le faire y'a 1 mois et j'ai méga galléré, mais grâce à tomlev ça a géré !

    Si jamais tu n'y arrives pas, je te mettrais mon code pour t'aider ^^

    Bon courage !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 202
    Points : 43
    Points
    43
    Par défaut
    Merci pour ta réponse

    Je veux bien jetter un coup d'oeil a ton code car j'ai essayé cette piste.
    Le problème c'est que le contenu de ma datagridview est databindé avec une source de données linq to sql. Je ne suis pas parvenu a faire une colonne de checkboxes qui soit indépendante du reste

    A+

  4. #4
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Hum je sais pas si mon code te sera vraiment utile alors...

    Là je l'ai pas sous la main, mais regarde ces deux sujets que j'ai fait y'a un mois, tu devrais pouvoir y trouver des réponses.
    - Sujet 1 (ouais il est long mais franchement ça te sera utile ! )
    - Sujet 2

    Bon courage !

    EDIT : je te mettrai mon code complet cet aprèm' en expliquant ce qu'il fait ^^

  5. #5
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Voilà comme promis le code complet ^^
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
            private FlowLayoutPanel flp_classification = new FlowLayoutPanel(); // Créé un FlowLayoutPanel.
            private Dictionary<int, PictureBox> dic_pictureBoxes = new Dictionary<int, PictureBox>(); // Créé un dictionnaire de PictureBoxes.
            private void dgv_classification_CurrentCellDirtyStateChanged(object sender, EventArgs e)
            {
                if (dgv_classification.CurrentCell.OwningColumn.Name == nomColCheckBox) 
                {
                    if (dgv_classification.IsCurrentCellDirty == true) 
                    {
                        if (dgv_classification.CommitEdit(DataGridViewDataErrorContexts.Commit))
                        {
                            DataRowView drv_classification = dgv_classification.CurrentRow.DataBoundItem as DataRowView; // Crée une DataRowView à partir du DataGridView.
                            int id = (int)drv_classification[nomColId]; // cast la colonne IdPictoClass du DataGridView en int.
                            bool isChecked = (bool)dgv_classification.CurrentCell.Value; // cast de la valeur de la cellule sur laquelle on clique en bool.
                            if (isChecked)
                            {
                                if (drv_classification != null)
                                {
                                    byte[] bytes = drv_classification[nomColImg] as byte[]; // Créé un tableau de byte contenant l'image de la ligne cochée.
                                    if (bytes != null)
                                    {
                                        // Définit la position et la taille du FLP.
                                        flp_classification.Size = new Size(572, 245);
                                        flp_classification.Location = new Point(288, 78);
                                        tp_class.Controls.Add(flp_classification); // Ajoute le FlowLayoutPanel à l'onglet.
     
                                        // Création de la PictureBox.
                                        PictureBox pb_picto_class = new PictureBox();
                                        pb_picto_class.Size = new Size(92, 106);
                                        pb_picto_class.BorderStyle = BorderStyle.FixedSingle;
                                        pb_picto_class.SizeMode = PictureBoxSizeMode.StretchImage;
                                        flp_classification.Controls.Add(pb_picto_class); // Ajoute la PictureBox au FlowLayoutPanel.
                                        dic_pictureBoxes[id] = pb_picto_class; // Ajoute la PictureBox au dictionaire.
     
                                        byte[] bmpBytes = new byte[bytes.Length - 78]; // Créé un nouveau tableau de byte de la même longueur que bytes - 78 (car je me suis aperçu que les 78 premiers bits du tableau faisaient planter l'application).
                                        MemoryStream ms = new MemoryStream(bytes); // Créé une strem contenant le bytes.
                                        ms.Read(bmpBytes, 0, 78); // Lit les 78 premiers bits.
                                        ms.Read(bmpBytes, 0, bmpBytes.Length); // Ecrase les 78 premiers bits aussitôt avec la suite des données.
                                        ms = new MemoryStream(bmpBytes); // Recréé la stream avec le nouveau buffer
                                        pb_picto_class.Image = Image.FromStream(ms); // La PictureBox reçoit l'image de la ligne cochée.
                                    }
                                }
                            }
                            else
                            {
                                if (dic_pictureBoxes.ContainsKey(id))
                                {
                                    PictureBox pb_picto_class = dic_pictureBoxes[id];
                                    dic_pictureBoxes.Remove(id); // Détruit la PictureBox du dictionnaire dont l'id correspond.
                                    flp_classification.Controls.Remove(pb_picto_class); // Supprime le controle du FlowLayoutPanel.
                                }
                            }
                        }
                    }
                }
            }
    Pour faire simple, lorsque que je cochais une case dans mon DataGridVieuw, l'image (stockée dans ma table) correspondante à la ligne cochée était affiché dans une PictureBox, dans un FlowLayoutPanel.

    Voilà je pense que tu as tout ce qu'il te faut pour réussir ^^

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2008
    Messages : 23
    Points : 28
    Points
    28
    Par défaut Ajouter des lignes dans le datagridview sans les afficher en C#
    Bonjour à Tous,

    Je vous d'avance pour l'importance que vous accorderez à mon message... J'ai un datagridview dans lequel j'ajoute des lignes selon certaines conditions mais je voudrais bien que lorsqu'une ligne dans le lot n'est pas bon tout le Lot s'annule...........

    Je voulais aussi tenter la solution suivante: J'ajoute les lignes au Datagridview sans les afficher tant qu'on est pas à la fin du lot et donc si une ligne du lot n'est pas bonne, tout le lot s'annule

    Merci bien pour votre aide

Discussions similaires

  1. sélectionner une row dans une DataGridView
    Par Shadam dans le forum VB.NET
    Réponses: 5
    Dernier message: 05/05/2011, 10h18
  2. La selection d'un mot dans un DataGridView
    Par eric062 dans le forum VB.NET
    Réponses: 2
    Dernier message: 22/10/2008, 12h48
  3. Selection d'une ligne dans un DatagridView
    Par abbd dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/05/2008, 17h31
  4. Selection d'une case dans le dataGridview
    Par abbd dans le forum Windows Forms
    Réponses: 1
    Dernier message: 05/03/2008, 12h36
  5. Bloquer une seule Row dans un DataGridView
    Par Contrec dans le forum C#
    Réponses: 4
    Dernier message: 05/09/2007, 13h07

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