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 :

DataGridView : repérage d'une cellule dans les en-têtes [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Points : 17
    Points
    17
    Par défaut DataGridView : repérage d'une cellule dans les en-têtes
    Bonjour,

    Dans un DataGridView je souhaiterais que les en-têtes de la ligne et de la colonne de la cellule survolée par la souris soient repérés par un changement de couleur comme dans EXCEL.
    Merci de votre aide.

  2. #2
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    Bonjour

    tu peux essayer cela :
    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 DataGridView1_CellMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseMove
     
          DataGridView1.EnableHeadersVisualStyles = False
          If (e.ColumnIndex >= 0 And e.RowIndex >= 0) Then
             For i = 0 To DataGridView1.ColumnCount - 1
                DataGridView1.Columns.Item(i).HeaderCell.Style.BackColor = Color.White
             Next i
             For i = 0 To DataGridView1.RowCount - 1
                DataGridView1.Rows.Item(i).HeaderCell.Style.BackColor = Color.White
             Next i
             DataGridView1.Columns.Item(e.ColumnIndex).HeaderCell.Style.BackColor = Color.Azure
             DataGridView1.Rows.Item(e.RowIndex).HeaderCell.Style.BackColor = Color.Crimson
     
          End If
     
       End Sub
    Sincèrement

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2013
    Messages : 18
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup pour ce code.
    J'avais tenté une procédure analogue mais qui ne fonctionnait pas car j'ignorais l'instruction ".EnableHeadersVisualStyles = False" que j'ai encore du mal à interpréter. J'ai adapté le code car le balayage de toutes les lignes et colonnes pour restituer la BackColor initiale prenait beaucoup de temps sur mon application et j'ai remplacé la procédure "CellMouseMove" par les 2 procédures "CellMouseEnter" et "CellMouseLeave" ce qui est beaucoup plus rapide.
    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_Cell.MouseEnter(sender As Object, e As DataGridViewCellEventArgs) Handles DGV.CellMouseEnter
    	If (e.ColumnIndex >= 0 And e.RowIndex >= 0) Then
    		With DGV
    			.EnableHeadersVisualStyles = False
    			.Columns(e.ColumnIndex).HeaderCell.Style.BackColor = Color.LightGray
    			.Rows(e.RowIndex).HeaderCell.Style.BackColor = Color.LightGray
    		End If
    	End With
    End Sub
     
    Private Sub DGVPlanning_CellMouseLeave(sender As Object, e As DataGridViewCellEventArgs) Handles DGV.CellMouseLeave
    	If (e.ColumnIndex >= 0 And e.RowIndex >= 0) Then
    		With
    			.EnableHeadersVisualStyles = False
    			.Columns(e.ColumnIndex).HeaderCell.Style.BackColor = .ColumnHeadersDefaultCellStyle.BackColor
    			.Rows(e.RowIndex).HeaderCell.Style.BackColor = .RowHeadersDefaultCellStyle.BackColor
    		End If
    	End With
    End Sub
    Encore merci de m'avoir si rapidement dépanné

  4. #4
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    Bonsoir,

    Quand la valeur de .EnableHeadersVisualStyles est true, tu obliges l'utilisation des styles visuels du thème actuel de ton PC et donc tu ne peux pas personnaliser. En mettant cette valeur à false, tu ne l'obliges plus et tu peux du coup changer les propriétés.

    Sincèrement

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

Discussions similaires

  1. [XL-2010] Copier l'intitulé d'une cellule dans l'en-tête !
    Par etranger5 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/02/2018, 10h55
  2. [XL-2007] Renvoyer la valeur d'une cellule dans les en tête et pied de page.
    Par bedoch dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/07/2009, 09h02
  3. DataGridView et format des valeurs dans les cellules
    Par saultapt dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/06/2008, 16h55
  4. recuperer les valeurs d'une cellule dans un fichier excel
    Par cortex59 dans le forum Général VBA
    Réponses: 2
    Dernier message: 24/04/2008, 13h10
  5. Réponses: 3
    Dernier message: 19/08/2007, 02h04

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