J'ai un DataGridView éditable avec SelectionMode défini sur FullRowSelect (donc la ligne entière est mise en surbrillance lorsque l'utilisateur clique sur n'importe quelle cellule). Cependant, j'aimerais que la cellule qui a actuellement le focus soit mise en évidence avec une couleur de fond différente (afin que l'utilisateur puisse voir clairement quelle cellule il va éditer). Comment puis-je faire cela (je ne veux pas changer le SelectionMode)?Comment puis-je mettre en surbrillance la cellule actuelle dans un DataGridView lorsque SelectionMode = FullRowSelect
Répondre
Je me suis une meilleure façon de le faire, en utilisant l'événement CellFormatting :
Private Sub uxContacts_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles uxContacts.CellFormatting
If uxContacts.CurrentCell IsNot Nothing Then
If e.RowIndex = uxContacts.CurrentCell.RowIndex And e.ColumnIndex = uxContacts.CurrentCell.ColumnIndex Then
e.CellStyle.SelectionBackColor = Color.SteelBlue
Else
e.CellStyle.SelectionBackColor = uxContacts.DefaultCellStyle.SelectionBackColor
End If
End If
End Sub
Vous souhaitez utiliser la méthode DataGridView RowPostPaint. Laissez le cadre dessiner la ligne, et aller ensuite en arrière et la couleur dans la cellule qui vous intéresse.
Un exemple est ici à MSDN
Merci pour votre aide. Si je comprends bien, cependant, l'article MSDN semble suggérer que je devrais utiliser la méthode RowPrePaint. Cependant, même si je ne peux toujours pas trouver le bon code à utiliser. –
Essayez cela, la méthode OnMouseMove:
Private Sub DataGridView1_CellMouseMove(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseMove
If e.RowIndex >= 0 Then
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.SelectionBackColor = Color.Red
End If
End Sub
Private Sub DataGridView1_CellMouseLeave(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellMouseLeave
If e.RowIndex >= 0 Then
DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.SelectionBackColor = DataGridView1.DefaultCellStyle.SelectionBackColor
End If
End Sub
Pour moi CellFormatting
le tour est joué. J'ai un ensemble de colonnes que l'on peut éditer (que je fait apparaître dans une couleur différente), ce qui est le code utilisé i
Private Sub Util_CellFormatting(ByVal Sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgvUtil.CellFormatting
If dgvUtil.CurrentCell IsNot Nothing Then
If e.RowIndex = dgvUtil.CurrentCell.RowIndex And e.ColumnIndex = dgvUtil.CurrentCell.ColumnIndex And (dgvUtil.CurrentCell.ColumnIndex = 10 Or dgvUtil.CurrentCell.ColumnIndex = 11 Or dgvUtil.CurrentCell.ColumnIndex = 13) Then
e.CellStyle.SelectionBackColor = Color.SteelBlue
Else
e.CellStyle.SelectionBackColor = dgvUtil.DefaultCellStyle.SelectionBackColor
End If
End If
End Sub
Ceci est juste une copie de la réponse acceptée 7 ans auparavant. Au lieu de re-poster, vous devriez upvote la réponse acceptée lorsque vous avez assez de rep. – OhBeWise
- 1. DataGridView: FullRowSelect et Focus
- 2. DataGridView: Comment sélectionner la première cellule dans la ligne actuelle lorsque MultiSelect est vrai
- 3. Comment mettre en surbrillance la ligne et la colonne d'une table lors d'une cellule utilisant jQuery?
- 4. JQuery DatePicker, comment mettre en surbrillance la date de valeur d'entrée actuelle?
- 5. JqueryUI show en surbrillance cellule incorrecte
- 6. Comment: mettre en surbrillance le nœud sélectionné dans un UltraTree
- 7. Mettre en surbrillance un morceau de code dans un lstlisting
- 8. Comment mettre à jour un dataset en utilisant datagridview?
- 9. Comment mettre une ligne en surbrillance dans gridview?
- 10. Mettre le texte en surbrillance dans la boîte aux messages
- 11. Mettre en surbrillance du texte dans un contrôle Webbrowser .net
- 12. Comment mettre en surbrillance la syntaxe pour les fichiers Emacs
- 13. Comment mettre en surbrillance un lien basé sur la page en cours?
- 14. DataGridView - "Style de sélection de cellule" - Modifier la cellule
- 15. Comment gérer un événement en C# basé sur un clic de cellule dans un DataGridView?
- 16. Comment mettre en surbrillance div en utilisant javascript ou jquery
- 17. Dans emacs, comment mettre en surbrillance la ligne en cours dans le cadre actuel uniquement?
- 18. C# /. NET comment mettre en évidence certaines lignes dans DataGridView
- 19. Vim - mettre en surbrillance les lignes modifiées
- 20. UpdateCellValue() dans un Datagridview
- 21. Comment obtenir la valeur de la première colonne de la ligne actuelle de Winform DataGridView?
- 22. Mettre en surbrillance le code de la base de données
- 23. Comment mettre à jour datagridview
- 24. Comment mettre à jour une seule ligne dans un DataGridView?
- 25. Comment modifier l'ordre de tabulation dans un DataGridView?
- 26. Mettre en surbrillance des zones sur l'image dans ASP.Net
- 27. : Comment mettre certains mots en surbrillance avec jQuery
- 28. comment mettre l'accent sur la nouvelle ligne dans datagridview - vb.net
- 29. Mettre en surbrillance dans Visual Studio pour Javascript?
- 30. DataGridView n'appelle pas la méthode Paint lorsque InvalidateCell est appelée
[Autre option] (http: // stackoverflow .com/a/35297585/3773066) J'ai codé où le rectangle de focus sera toujours affiché sur 'CurrentCell'. Ce n'est pas un 'BackColor' différent, mais a le même effet. – OhBeWise