Meilleur auteur de réponses
Selection d'une cellule dans un DataGridView

Question
-
Bonjour à tous
Ma question va sans doute faire sourire les programmateurs chevronnés ....
J'ai un DataGridView de 2 colonnes (plus la colonne d'en-têtes de lignes) et de x lignes (plus la ligne d'en-têtes de colonnes)
J'ai réussi à donner la couleur et le texte voulus aux en-têtes de colonnes
Je voudrais dans mon code d'une part assigner une couleur (Gris par exemple) à la cellule d'intersection Lignes/Colonnes et d'autre part numéroter automatiquement les cellules d'en-tête de ligne et leur assigner une couleur.
Je bute sur la selection des cellules, et c'est là ma question : Comment faire pour sélectionner par code VB.NET une cellule de la colonne RowHeader et plus généralement comment sélectionner une cellule quelconque ?
Merci d'avance à qui pourra m'aider
Réponses
-
Bonjour jedou,
Tu peux jeter un œil à ceci :
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load With Me.DataGridView1 .Rows.Add(100) .EnableHeadersVisualStyles = False .RowHeadersWidth = 100 For lg As Integer = 0 To .RowCount - 1 .Rows.Item(lg).HeaderCell.Style.BackColor = Color.Aquamarine .Rows.Item(lg).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight .Rows.Item(lg).HeaderCell.Value = Format(lg + 1, "####0") For cl As Integer = 0 To .ColumnCount - 1 Me.DataGridView1(cl, lg).Value = lg + 1 & "-" & cl + 1 Next cl Next lg End With End Sub
A noter que l'affectation d'une couleur aux en-tête de lignes nécessite:
EnableHeadersVisualStyles = False
ce qui change le look général.
Pour accéder à une cellule quelconque (hors en-tête) :
Me.DataGridView1(colonne, ligne).Value = "ma valeur"
Sinon, je ne comprend pas ta notion de cellule d'intersection.
Cordialement, Jacques
-
Bonsoir Jacques93 et merci
C'est tout à fait ce qui me manquait ! Avec ça je vais pouvoir avancer !
Concernant ce que j'ai appelé cellule d'intersection, il s'agit de la cellule du coin haut gauche du DataGridview, à gauche des en-têtes de colonne et en haut des en-têtes de lignes.
Merci encore
Cordialement, Jean
- Marqué comme réponse jedou lundi 18 mars 2013 09:59
-
Donc, sauf erreur, c'est la cellule qui sélectionne la totalité du DataGridView (comme dans Excel). Tu peux essayer :
Me.DataGridView1.TopLeftHeaderCell.Style.BackColor = Color.DarkGray
Sur l'évènement CellClick, on voit qu'elle est en ligne -1, colonne -1.
Cordialement, Jacques
- Marqué comme réponse jedou jeudi 14 mars 2013 23:07
-
C'est bien ça, je n'avais pas pensé à la simiitude avec Excel !
Merci mille fois, le code que tu m'indique répond exactement à mon problème, je vais pouvoir continuer mon travail.
Heureusement pour les bricoleurs comme moi qu'il y a des pros dévoués comme toi !
Bien cordialement, Jean
- Marqué comme réponse jedou lundi 18 mars 2013 10:00
Toutes les réponses
-
Bonjour jedou,
Tu peux jeter un œil à ceci :
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load With Me.DataGridView1 .Rows.Add(100) .EnableHeadersVisualStyles = False .RowHeadersWidth = 100 For lg As Integer = 0 To .RowCount - 1 .Rows.Item(lg).HeaderCell.Style.BackColor = Color.Aquamarine .Rows.Item(lg).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight .Rows.Item(lg).HeaderCell.Value = Format(lg + 1, "####0") For cl As Integer = 0 To .ColumnCount - 1 Me.DataGridView1(cl, lg).Value = lg + 1 & "-" & cl + 1 Next cl Next lg End With End Sub
A noter que l'affectation d'une couleur aux en-tête de lignes nécessite:
EnableHeadersVisualStyles = False
ce qui change le look général.
Pour accéder à une cellule quelconque (hors en-tête) :
Me.DataGridView1(colonne, ligne).Value = "ma valeur"
Sinon, je ne comprend pas ta notion de cellule d'intersection.
Cordialement, Jacques
-
Bonsoir Jacques93 et merci
C'est tout à fait ce qui me manquait ! Avec ça je vais pouvoir avancer !
Concernant ce que j'ai appelé cellule d'intersection, il s'agit de la cellule du coin haut gauche du DataGridview, à gauche des en-têtes de colonne et en haut des en-têtes de lignes.
Merci encore
Cordialement, Jean
- Marqué comme réponse jedou lundi 18 mars 2013 09:59
-
Donc, sauf erreur, c'est la cellule qui sélectionne la totalité du DataGridView (comme dans Excel). Tu peux essayer :
Me.DataGridView1.TopLeftHeaderCell.Style.BackColor = Color.DarkGray
Sur l'évènement CellClick, on voit qu'elle est en ligne -1, colonne -1.
Cordialement, Jacques
- Marqué comme réponse jedou jeudi 14 mars 2013 23:07
-
C'est bien ça, je n'avais pas pensé à la simiitude avec Excel !
Merci mille fois, le code que tu m'indique répond exactement à mon problème, je vais pouvoir continuer mon travail.
Heureusement pour les bricoleurs comme moi qu'il y a des pros dévoués comme toi !
Bien cordialement, Jean
- Marqué comme réponse jedou lundi 18 mars 2013 10:00