none
Selection d'une cellule dans un DataGridView RRS feed

  • 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

    jeudi 14 mars 2013 15:36

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


    • Modifié Jacques93 jeudi 14 mars 2013 17:32
    • Marqué comme réponse jedou jeudi 14 mars 2013 20:12
    jeudi 14 mars 2013 17:30
  • 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
    jeudi 14 mars 2013 20:27
  • 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
    jeudi 14 mars 2013 23:02
  • 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
    jeudi 14 mars 2013 23:18

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


    • Modifié Jacques93 jeudi 14 mars 2013 17:32
    • Marqué comme réponse jedou jeudi 14 mars 2013 20:12
    jeudi 14 mars 2013 17:30
  • 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
    jeudi 14 mars 2013 20:27
  • 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
    jeudi 14 mars 2013 23:02
  • 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
    jeudi 14 mars 2013 23:18