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

VB.NET Discussion :

sélection multiples dans un datagridview


Sujet :

VB.NET

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Par défaut sélection multiples dans un datagridview
    Bonjour,

    j'ai un bout de code qui me créer à la volée un datagridview (et le rempli bien évidemment).
    J'aimerai adjoindre une fonctionnalité, à savoir: pouvoir sélectionner plusieurs cellules concomitante ou pas et afficher dans une boite type info bulle, la somme (ou autre opération mathématique) du contenu de ces cellules.


    j'ai donc trouvé la propriété "MyDataGridView.CurrentCell "
    mais mon 1er soucis est de savoir ou je dois mettre mon code sachant que mon datagrid n'existe pas tant qu'il n'a pas été généré.

    J'espère avoir été assez clair, et merci pour votre aide,

    Kirk

  2. #2
    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
    Il faut :
    - gérer l'event SelectionChanged du DataGridView,
    - dans le code de cet event, on utilisera la propriété SelectedCells du DataGridView.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DGV1.SelectionChanged += new EventHandler(DGV1_SelectionChanged);
    ...
    private void DGV1_SelectionChanged(object sender, EventArgs e)
    {
       for (i = 0; i < DGV1.SelectedCells.Count; i++)
          .... // le traitement de la selection
    }

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    je paraphrase Graffito.
    Traduit en vb.net, ça pourrait ressembler à ça :
    Abonnement à l'événement SelectionChanged, après la création du Dgv :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            AddHandler MonDgvFraichementCree.SelectionChanged, AddressOf Dgv_SelectionChanged
    et l'événement :
    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
        Private Sub Dgv_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) 'Handles DataGridView1.SelectionChanged
     
            Dim dgv As DataGridView = CType(sender, DataGridView)
     
            If dgv.GetCellCount(DataGridViewElementStates.Selected) > 0 Then
                Dim somme As Single = 0
                For Each cell As DataGridViewCell In dgv.SelectedCells
                    somme += CSng(cell.Value)
                Next
     
                '*** Pour tester :
                TextBox1.Text = CStr(somme)
     
            End If
     
        End Sub

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 148
    Par défaut
    Bonsoir,

    merci pour votre aide,

    c'est à peu près cela que je désirais.

    je me heurte cependant à un bug lors de l’exécution.
    pour info, dans mon data grid j'ai des données financières et des dates.
    Or quand j’exécute le bout de code qui va me créer un datagrid, j'obtiens un bug car il y a déjà une cellule sélectionnée et bien sur c'est une date.

    le but serait de ne sélectionner que ce que j'ai décidé de sélectionner (pas la cellule sélectionnée par défaut)
    je ne comprends pas pourquoi cela bug puisque l'on est sur un selectionchange.

    de plus je souhaiterais afficher le résultat sous forme d'une bulle (outil tooltip)

    merci pour votre aide encore une fois

    K

  5. #5
    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
    Avant de faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    somme += CSng(cell.Value)
    il faut tester si dgv.Colums[cell.Column] correspond à une colonnne à sommer (ou simplement vérifier le type de Cell.Value).

    Pour le tooltip, on peut affecter à toutes les cellules sélectionnées le texte choisi (mettre préalablement à true la propriété DataGridView.ShowCellToolTips).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cell.ToolTipText = "Mon total est de xxx" ;
    Attention, il faudra mémoriser la liste des cellules avec Tooltip pour pouvoir supprimer le tooltip dès que la sélection change.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    je continue à paraphraser Graffito avec ce code :
    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
        Private Sub Dgv_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) 'Handles DataGridView1.SelectionChanged
     
            Dim dgv As DataGridView = CType(sender, DataGridView)
     
     
            If dgv.GetCellCount(DataGridViewElementStates.Selected) > 0 Then
                Dim somme As Single = 0
     
                For Each cell As DataGridViewCell In dgv.SelectedCells
                    Dim numeroCol As Integer = cell.ColumnIndex
                    If numeroCol = 3 OrElse numeroCol = 4 Then
                        somme += CSng(cell.Value)
                    End If
                Next
     
                '*** Pour tester :
                TextBox1.Text = CStr(somme)
            End If
        End Sub
    Ici, par exemple, seules les colonnes 3 et 4 sont prises en compte.

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

Discussions similaires

  1. Sélection multiple dans un sous formulaire ?
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 09/03/2019, 01h05
  2. Sélection multiples dans datagridview
    Par NoussaL dans le forum Windows Forms
    Réponses: 1
    Dernier message: 13/10/2008, 13h45
  3. Sélection Multiple dans une JTable
    Par bobic dans le forum Composants
    Réponses: 3
    Dernier message: 07/08/2006, 17h35
  4. sélection multiple dans plusieurs zones de liste
    Par malabar92 dans le forum Access
    Réponses: 2
    Dernier message: 16/05/2006, 01h08
  5. [Débutant] Sélection multiples dans une Listbox
    Par eraim dans le forum Access
    Réponses: 4
    Dernier message: 15/10/2005, 03h21

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