Datagrid Row en "surbrillance"

Résolu
AirByte Messages postés 13 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 25 février 2011 - 3 févr. 2011 à 03:12
AirByte Messages postés 13 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 25 février 2011 - 3 févr. 2011 à 17:33
Bonjour

J'ai un Datagridview remplis de data issue d'une BD SQL. Les colonnes sont en readonly. J'ajoute une Textboxcolumn pour que l'utilisateur puisse entrer des données.

Ce que je voudrais faire, c'est mettre en "surbrillance" la ligne correspondant a la selection en changeant sa couleur.

Je ne sais pas trop comment faire, j'ai essayé certains trucs du genre

  
Private Sub DGView_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DGView.SelectionChanged

            Dim TheRow As Integer
            TheRow = DGView.CurrentCellAddress.Y
            Me.DGView.Rows(TheRow).DefaultCellStyle.BackColor = Color.FromArgb(134, 34, 234)

 End Sub


Le problème avec ceci c'est que dès que je sélectionne autre chose, la "surbrillance" ne s'enlève pas.

Quelqu'un aurait une suggestion?

Merci

1 réponse

AirByte Messages postés 13 Date d'inscription mercredi 5 janvier 2011 Statut Membre Dernière intervention 25 février 2011
3 févr. 2011 à 17:33
Ok j'ai fait quelque chose qui me convient:

Private Sub DGView_CellLeave(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGView.CellLeave

        If flagfillup = False Then
            Dim NoOldRow As Integer
            NoOldRow = DGView.CurrentCellAddress.Y
            Me.DGView.Rows(NoOldRow).DefaultCellStyle.BackColor = Color.Empty
        End If

    End Sub

    Private Sub DGView_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DGView.SelectionChanged

        If flagfillup = False Then
            Dim NoNewRow As Integer
            NoNewRow = DGView.CurrentCellAddress.Y
            Me.DGView.Rows(NoNewRow).DefaultCellStyle.BackColor = Color.FromArgb(243, 243, 243)
        End If

    End Sub


Le FlagFillUp permet de ne pas appliquer les procédures pendant le remplissage du datagrid par la requête SQL.

Je me suis inspiré d'un document très complet sur les datagridview:

4.1.1 Order of Validation Events
The following identifies the order of validation, enter/leave and begin/end edit events. The EditMode is EditOnEnter.
When moving from cell to cell (in the same row)
1) Cell Leave (old cell)
2) Cell Validating/ed (old cell)
3) Cell EndEdit (old cell)
4) Cell Enter (new cell)
5) Cell BeginEdit (new cell)

When moving from one row to another you get:
1) Cell Leave (old cell), Row leave (old row)
2) Cell Validating/ed (old cell)
3) Cell EndEdit (old cell)
4) Row Validating/ed (old row)
5) Row Enter (new row)
6) Cell Enter (new cell)
7) Cell BeginEdit (new cell)
3
Rejoignez-nous