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

Jokyone Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 10 décembre 2011 - 29 nov. 2011 à 21:47
NHenry Messages postés 15025 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 - 11 déc. 2011 à 23:51
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

NHenry Messages postés 15025 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
29 nov. 2011 à 22:16
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
---
0
Jokyone Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 10 décembre 2011
29 nov. 2011 à 22:34

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
0
NHenry Messages postés 15025 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
29 nov. 2011 à 23:40
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
---
0
Jokyone Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 10 décembre 2011
2 déc. 2011 à 01:28
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15025 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
9 déc. 2011 à 21:54
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
---
0
Jokyone Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 10 décembre 2011
10 déc. 2011 à 01:25
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
0
Jokyone Messages postés 6 Date d'inscription mercredi 19 juillet 2006 Statut Membre Dernière intervention 10 décembre 2011
10 déc. 2011 à 01:28
Enervent cette interprétation du français où les apostrophes sont interprétées par des (#8217)

...

Joky
0
NHenry Messages postés 15025 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 26 novembre 2022 157
11 déc. 2011 à 23:51
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
---
0