2009-09-10 12 views
6

Comment obtenir le numéro de ligne DataGridView? Plus précisément, si un utilisateur a sélectionné une seule cellule, comment pouvez-vous obtenir ce numéro de ligne? Il doit accéder à une cellule particulière en fonction de ce que l'utilisateur a sélectionné.Obtention du numéro de ligne dans un DataGridView

Je sais que la méthode RemoveAt peut être utilisée pour supprimer à Focus, mais vous ne pouvez pas obtenir le numéro de ligne au foyer apparemment?

Merci pour l'aide!

Répondre

17

Vous pouvez simplement utiliser RowIndex sur le current cell:

var row = dataGridView1.CurrentCell.RowIndex; 
0

Il est à peu près la même chose, mais vous pouvez également utiliser cette solution:

var row = dataGridView1.CurrentRow.Index 
0

Une autre façon si vous avez besoin de suivre l'interaction utilisateur avec un DataGridView: Dans mon cas, il existe un traitement supplémentaire dans certaines fonctions génériques qui utilisent les colonnes et les coordonnées de ligne Me.I_SelCol et Me.I_SelRow, mais je n'ai pas montré cela parce que ce n'est pas pertinent pour l'OP.

Meilleures salutations, Rob

Private Sub I_DataGridView_CurrentCellChanged(sender As Object, e As EventArgs) Handles I_DataGridView.CurrentCellChanged 

     If Me.I_DataGridView.CurrentCellAddress.X < 0 Or Me.I_DataGridView.CurrentCellAddress.Y < 0 Then Exit Sub 

     ' The Windows Me.I_DataGridView object will have already deselected the current cell and selected the 
     ' new cell as per user navigation using mouse or cursor keys. We just need to store the current 
     ' co-ordinates for the currently selected cell. 

     Me.I_SelCol = Me.I_DataGridView.CurrentCellAddress.X 
     Me.I_SelRow = Me.I_DataGridView.CurrentCellAddress.Y 

Exit Sub 
1

celui-ci fonctionne très bien.

Private Sub DataGridView1_RowPrePaint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewRowPrePaintEventArgs) Handles DataGridView1.RowPrePaint 

If e.RowIndex >= 0 Then 
     Me.DataGridView1.Rows(e.RowIndex).Cells(0).Value = e.RowIndex + 1 
    End If 
End Sub 
Questions connexes