2009-01-07 10 views

Répondre

2

réponse de Marcus est correct, mais vous pouvez aussi avoir besoin de mettre ...

dgv.CurrentCell = dgv.Rows[0].Cells[0]; 

Je crois propriété de cellule actuelle DataGridView cela fait défiler la grille. En outre, pour être tout à fait sûr, vous voudrez peut-être ajouter ceci avant que l'autre ligne de code ...

dgv.CurrentCell = null; 

Cela garantira que si la ligne que vous voulez est déjà la ligne active mais juste défilée hors de la vue, il va le faire défiler dans la vue.

+0

J'accepte votre réponse comme la bonne, elle fait défiler/met la rangée en vue si ce n'est pas le cas. De même, j'ai aussi voté pour la réponse de Marcus, j'ai oublié d'indiquer dans ma question que la rangée nécessaire devait être mise en évidence si ce n'est pas le cas. Oui, dgv.CurrentCell = null est également nécessaire –

3

Vous devez effacer l'ancienne position et définir un nouveau

La collection a dataGridView1.SelectedRows les lignes actuellement sélectionnées. En fonction de la propriété MultiSelect de la grille, vous devrez peut-être parcourir toutes les lignes des SelectedRows et les marquer comme non sélectionnées. Si vous êtes en mode de sélection unique, il suffit de définir la nouvelle ligne comme sélectionnée pour effacer l'ancienne sélection.

Pour sélectionner une ligne particulière (dans ce cas, l'un à l'index 0) vous ajoutez juste la ligne dataGridView1.Rows [0] .selected = true;

+0

Merci, il change la ligne active, il est en surbrillance. Mais il ne défile pas sur la nouvelle ligne active. par exemple. grd.Rows [grd.Rows.Count-1] .Selected = true, comment faire en sorte que datagridView défile vers la ligne active? –

0
Private Sub GridSaleItem_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridSaleItem.SelectionChanged 
    Dim rowcount As Integer 
    rowcount = GridSaleItem.Rows.Count 
    For i As Integer = 1 To rowcount 
     If i = 1 Then 
      ' 
     Else 
      If i = rowcount Then 
       Me.GridSaleItem.CurrentCell = Me.GridSaleItem.Rows(i - 1).Cells(0) 
       Me.GridSaleItem.Rows(i - 1).Selected = True 
      End If 
     End If 
    Next 

End Sub 
0
Else 
     If i = rowcount Then 
      Me.GridSaleItem.CurrentCell = Me.GridSaleItem.Rows(i - 1).Cells(0) 
      Me.GridSaleItem.Rows(i - 1).Selected = True 
     End If 
    End If 
Next 
0

Vous semblez exiger non seulement le réglage de la ligne sélectionnée, mais aussi la ligne affichée. Vous pouvez accéder à ce dernier avec la propriété FirstDisplayedScrollingRowIndex sur votre DataGridView. L'une des configurations utiles:

int lastShown = FirstDisplayedScrollingRowIndex + DisplayedRowCount(false) - 2; 

if (lastShown < yourIndex) 
    FirstDisplayedScrollingRowIndex += yourIndex - lastShown; 
else if (FirstDisplayedScrollingRowIndex > yourIndex) 
    FirstDisplayedScrollingRowIndex = yourIndex; 

fera que votre ligne nouvellement sélectionnée ne disparaît pas de l'écran lors du défilement haut/bas programme.

Questions connexes