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.
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.
Bonjour
tu peux essayer cela :
Sincèrement
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
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.
Encore merci de m'avoir si rapidement dépanné
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
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager