Comment modifier la position de ligne du mode virtuel DataGridView? J'ai utilisé Windows Forms.Comment modifier la position de ligne du mode virtuel DataGridView?
Répondre
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.
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 –
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;
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? –
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
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
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.
Essayez-vous de changer la ligne active ou essayez-vous de prendre une ligne individuelle et de modifier son index? – codeConcussion
changer la ligne active –