Comment récupérer l'événement MouseClick sur les entêtes de colonnes d’un

Signaler
Messages postés
6
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
10 décembre 2011
-
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
-
Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
'
'**********************************************************************************************
'* Sub Par défaut créer par clic sur l'objet DataGridView1 dans la Form *
'* *
'* Cette Sub, ne déclenche AUCUN événement sur un clic de souris sur les en têtes de colonnes *
'* *
'**********************************************************************************************


' Ce code permet d'obtenir les Index des cellules : Colonne 1 vaut 0 et Ligne 1 vaut 0 ensuite ça s'incrémente...
Dim NumCol As Integer = -1
Dim NumRow As Integer = -1
NumCol = Me.DataGridView1.CurrentCell.ColumnIndex.ToString
NumRow = Me.DataGridView1.CurrentCell.RowIndex.ToString
'
'MSGB MsgBox("NumCol " & NumCol, MsgBoxStyle.Information, "NumRow = " & NumRow)


' Ce code permet d'obtenir les Index et les Noms des colonnes
' Mais ne fonctionne pas quand on clic sur la colonne
' Because il n'est pas placé dans la bonne méthode...
Dim NumHeader As Integer = -1
Dim NomHeader As String = ""
NumHeader = Me.DataGridView1.Columns(Me.DataGridView1.CurrentCell.ColumnIndex).Index
NomHeader = Me.DataGridView1.Columns(Me.DataGridView1.CurrentCell.ColumnIndex).HeaderText

MSGB MsgBox("NumHeader " & NumHeader, MsgBoxStyle.Information, "NomHeader = " & NomHeader)


End Sub


J’ai essayé ceci:

Private Sub DataGridView1_ColClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewColumnEventHandler) Handles DataGridView1.ColumnHeaderCellChanged
'

End Sub
Méthode non valable…


Ceci :

Private Sub DataGridView1_ColClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewColumnEventHandler) Handles DataGridView1.ColumnHeaderMouseClick
'

End Sub
Idem !



Quelqu’un sait-il comment faire ???

Merci d’avance.


Question subsidiaire :

Comment affecter un ContextMenuStrip Uniquement à la ligne d’entête des colonnes du DataGridView ???





Joky

8 réponses

Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
Bonjour,

Regardes sur MSDN et trouves :
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.columnheadermouseclick.aspx

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
6
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
10 décembre 2011


Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
'
'**********************************************************************************************
'* Sub Par défaut créer par clic sur l'objet DataGridView1 dans la Form *
'* *
'* Cette Sub, ne déclenche AUCUN événement sur un clic de souris sur les en têtes de colonnes *
'* *
'**********************************************************************************************


' Ce code permet d'obtenir les Index des cellules : Colonne 1 vaut 0 et Ligne 1 vaut 0 ensuite ça s'incrémente...
Dim NumCol As Integer = -1
Dim NumRow As Integer = -1
NumCol = Me.DataGridView1.CurrentCell.ColumnIndex.ToString
NumRow = Me.DataGridView1.CurrentCell.RowIndex.ToString
'
'MSGB MsgBox("NumCol " & NumCol, MsgBoxStyle.Information, "NumRow = " & NumRow)


' Ce code permet d'obtenir les Index et les Noms des colonnes
' Mais ne fonctionne pas quand on clic sur la colonne
' Because il n'est pas placé dans la bonne méthode...
Dim NumHeader As Integer = -1
Dim NomHeader As String = ""
NumHeader = Me.DataGridView1.Columns(Me.DataGridView1.CurrentCell.ColumnIndex).Index
NomHeader = Me.DataGridView1.Columns(Me.DataGridView1.CurrentCell.ColumnIndex).HeaderText

MSGB MsgBox("NumHeader " & NumHeader, MsgBoxStyle.Information, "NomHeader = " & NomHeader)


End Sub


J’ai essayé ceci:

Private Sub DataGridView1_ColClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewColumnEventHandler) Handles DataGridView1.ColumnHeaderCellChanged
'

End Sub
'Méthode non valable


Ceci :

Private Sub DataGridView1_ColClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewColumnEventHandler) Handles DataGridView1.ColumnHeaderMouseClick
'

End Sub
'Idem !







Quelqu un sait-il comment faire ???

Merci d avance.


Question subsidiaire :

Comment affecter un ContextMenuStrip Uniquement à la ligne d entête des colonnes du DataGridView ???


OK... Pigé... Je fais comment pour effacer les autres ?

Joky
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
Bonjour,

Tu créé ton ContextMenuStrip, puis tu l'affiches en utilisant la méthode adéquate de cet objet.
Sinon, je n'ai jamais eu cela à faire, mais je suppose que tu pourras le gérer.

Tu as regardé mon lien vers MSDN ?

Note, le texte en dessous est ma signature, mais je vois que tu as quand même pris le temps de la lire, c'est bien :)
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
6
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
10 décembre 2011

Ok ! Merci à toi pour le lien (qui ne fonctionne pas en VB 2010…)
Because la déclaration :
Dim direction As ListSortDirection

N’est pas dans la liste…

En revanche, la SUB déclenche bien l’événement voulu ;-)

Voici le code pour récupérer le numéro et le NOM de la colonne cliquée par l’utilisateur :


Private Sub dataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick
        '
        ' NumHeader, NomHeader & MSGB sont déclarées à un niveau Public dans un module...
        NumHeader = e.ColumnIndex
        NomHeader = Me.DataGridView1.Columns(NumHeader).HeaderText
        MSGB MsgBox("NumHeader " & NumHeader, MsgBoxStyle.Information, "NomHeader = " & NomHeader)

    End Sub




Joky
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
Bonjour,

Résolu ou pas ? (voir point 3 de ma signature)
Pour le tri, voir si il faut le faire manuellement ou si il y a une fonction intégrée.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Messages postés
6
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
10 décembre 2011

Résolut, celui-là et plein d’autres.
Galère la syntaxe VB 2010 quand tu viens de VB 6 !

Tj un PB avec le Popup menu. GRRR !
Je ne sais pas comment le lié UNIQUEMENT à la barre d’entête du DataGridview. (Les colonnes de la table MDB)
Il est lié a cet objet, certes, mais il s’affiche n’importe où sur la grille, ce qui est ridicule en fonction de sa fonction.
Si tu as une idée (ou un lien) je te remercie d’avance ;-)



Joky
Messages postés
6
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
10 décembre 2011

Enervent cette interprétation du français où les apostrophes sont interprétées par des (#8217)

...

Joky
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
Bonjour,

As-tu activé les Option Explicit et Option Strict ?
As-tu un screenshot ou un truc parlant ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---