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 :

[VB.NET] DataGrid et double click


Sujet :

Windows Forms

Vue hybride

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

    Informations forums :
    Inscription : Mars 2004
    Messages : 32
    Par défaut [VB.NET] DataGrid et double click
    je voudrai pouvoir selectionner une ligne de datagrid en double cliquant dessus mais le double click ne fonctionne que sur les entete de lignes et de colonnes mais pas sur les lignes de données elle meme.

    existe t il quand meme un moyen d' avoir cet evenement sur les données.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 32
    Par défaut
    en effectuant une recherche sur le net j'ai trouvé ca mais je ne sais pas comment le mettre en ouevre et comment le coder en vbnet.

    Le comportement que tu décris est standard pour le control DataGrid standard du framework. Pour pouvoir gérer le double clic sur une cellule du DataGrid, il faut ajouter un gestionnaire à l’événement double clic de chaque cellule. Le code suivant en C# est un début :

    foreach (object in DataGrid1.Controls)
    (Control(object)).DoubleClick += new System.EventHandler(MaMethodeGestionnaire);

    Il faut que la méthode “MaMethodeGestionnaire” respecte le prototype du gestionnaire du double clic.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 32
    Par défaut
    personne ne sait?

    ben moi non plus, pour commencer je sais meme pas où le mettre

  4. #4
    Membre éprouvé Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Par défaut
    salut,

    d'après

    Le comportement que tu décris est standard pour le control DataGrid standard du framework. Pour pouvoir gérer le double clic sur une cellule du DataGrid, il faut ajouter un gestionnaire à l’événement double clic de chaque cellule. Le code suivant en C# est un début :

    foreach (object in DataGrid1.Controls)
    (Control(object)).DoubleClick += new System.EventHandler(MaMethodeGestionnaire);

    Il faut que la méthode “MaMethodeGestionnaire” respecte le prototype du gestionnaire du double clic.
    il récupère tous les objets du datagrid et leurs ajoute un événement, comme visiblement on ne peut pas capter le double clic sur une ligne, on le capte sur les controles de cette ligne

    quand il dit que

    Il faut que la méthode “MaMethodeGestionnaire” respecte le prototype du gestionnaire du double clic.
    ça veut dire que ta fonction doit être de la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private void maFonction_DoubleClick(object sender, System.EventArgs e)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 32
    Par défaut
    quelqu'un peut me traduire en vb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    foreach (object in DataGrid1.Controls) 
    (Control(object)).DoubleClick += new System.EventHandler(MaMethodeGestionnaire);
    g un peu de mal

  6. #6
    Membre éprouvé Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for each control as Control in Datagrid1.Controls
       AddHandler control.DoubleClick, AddressOf MaMethodeGestionnaire

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 32
    Par défaut
    merci chman ca fonctionne mais avec des bugs et j'ai pas trop compris comment ca marche.

    je te met mon code pour savoir si je me prend de la bonne facon.

    car quand je double click il m'effectue un nombre important de fois la fonction double click alors que je voudrai qu'il ne s''execute qu'une seule fois.

    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
     
      Private Sub DataGrid1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.DoubleClick
            Dim numclient As Long
            Dim numligne As Integer
            numligne = DataGrid1.CurrentCell.RowNumber
            numclient = DataGrid1.Item(numligne, 1)
            MsgBox(numclient)
        End Sub
     
     
        Private Sub DataGrid1_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChanged
            For each control As Control In DataGrid1.Controls
                AddHandler control.DoubleClick, AddressOf DataGrid1_DoubleClick
            Next
        End Sub

  8. #8
    Membre éprouvé Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Par défaut
    essaye en prenant une fonction autre le doubleClick sur le datagrid

    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
     
    Private Sub MonDoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) 
            Dim numclient As Long 
            Dim numligne As Integer 
            numligne = DataGrid1.CurrentCell.RowNumber 
            numclient = DataGrid1.Item(numligne, 1) 
            MsgBox(numclient) 
        End Sub 
     
     
        Private Sub DataGrid1_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChanged 
            For each control As Control In DataGrid1.Controls 
                AddHandler control.DoubleClick, AddressOf MonDoubleClick 
            Next 
        End Sub

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 32
    Par défaut
    ca me fait le meme probleme, quand je doubleclick il m'affiche bien le msgbox que je veux mais il me l'affiche plusieurs fois.

    et le nombre de fois correspond au nombre de double clic ou je suis rendu

    je m'explique

    au 1er essai , la msgbox s'ouvre 1 fois
    au 2 nd essai, la msgbox s'ouvre 2 fois

    au n clic la sgbox s'ouvre n fois

    ?????????????????????????????????, :

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 32
    Par défaut
    en fait au 1er double clic rien se passe, le nombre de clic est n-1 ou n est le nombre d'essai ou de doubleclic effectué

  11. #11
    Membre éprouvé Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Par défaut


    , tu ajoutes ton événement à chaque changement de cellule donc

    la première fois, tu ajoutes un événement
    la deuxième fois, tu rajoutes encore un événement
    etc...

    il faut donc que tu abonnes tes objets uniquement à la création ou quand tu ajoutes une ligne par exemple


  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 32
    Par défaut
    et on peut ca comment, et tu veux dire quoi par abonné ses objet uniquement

  13. #13
    Membre éprouvé Avatar de chman
    Inscrit en
    Novembre 2002
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 94
    Par défaut
    abonner = AddHandler ...

    sinon tu utilises l'événement DataSourceChanged()

    et ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ' pour enlever ceux qui sont déjà abonnés
    for control as Control in DataGrid1.Controls
      RemoveHandler control.DoubleClick, AddressOf MonDoubleClick
     
    ' et on réabonne
    for control as Control in DataGrid1.Controls
      AddHandler control.DoubleClick, AddressOf MonDoubleClick
    mais il y a peut-être un moyen de savoir si un controle est abonné ou pas plutot que de tout enlever et tout remettre (surement même )

  14. #14
    Membre éclairé
    Homme Profil pro
    DBA - Développeur BI
    Inscrit en
    Avril 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : DBA - Développeur BI
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2003
    Messages : 442
    Par défaut DoubleClick dans un datagrid
    Citation Envoyé par chman
    abonner = AddHandler ...

    sinon tu utilises l'événement DataSourceChanged()

    et ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ' pour enlever ceux qui sont déjà abonnés
    for control as Control in DataGrid1.Controls
      RemoveHandler control.DoubleClick, AddressOf MonDoubleClick
     
    ' et on réabonne
    for control as Control in DataGrid1.Controls
      AddHandler control.DoubleClick, AddressOf MonDoubleClick
    mais il y a peut-être un moyen de savoir si un controle est abonné ou pas plutot que de tout enlever et tout remettre (surement même )
    Comment on utilise sa en vb.net 2003

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 32
    Par défaut
    j'avais trouver entre temps mais merci quand meme.

    ca marche mais si de temps en temps ca bug un peu avec l'apparition de 2 msgbox car le remove n'a pas eu le temps de se faire.

    une derniere chose, pour doublecliquer il faut d'abord cliquer (donc selectionner) et ensuite doublecliquer. si tu sais comment faire pour eviter cela


    en tout grand merci chman

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 32
    Par défaut [VB.NET] datagrid double click et gestion des evenement
    je relance l'edee de chman

    mais il y a peut-être un moyen de savoir si un controle est abonné ou pas plutot que de tout enlever et tout remettre (surement même )
    est ce qu'il existe une fonction qui permet de savoir si un controle est abonné c a dire qu'il a un evenement associé?

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

Discussions similaires

  1. Evenement double click sur une ligne d'un DataGrid
    Par imad_eddine dans le forum ASP.NET
    Réponses: 7
    Dernier message: 19/11/2007, 17h24
  2. [vb.net] double click dans une datagrid
    Par bguihal dans le forum VB.NET
    Réponses: 6
    Dernier message: 15/12/2005, 17h18
  3. [VB.NET] Datagrid + CheckBox : Cocher toutes les cases
    Par sirex007 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 24/05/2004, 15h33
  4. [VB.NET] Datagrid - Récupérer CheckBox cochées
    Par nmerydem dans le forum ASP.NET
    Réponses: 16
    Dernier message: 18/05/2004, 13h28
  5. [VB.NET] Datagrid dans tabstrip : bug ?
    Par necro dans le forum ASP.NET
    Réponses: 13
    Dernier message: 23/02/2004, 10h23

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