Wie die Zeilenposition des virtuellen Modus Datagridview ändern?
-
05-07-2019 - |
Frage
Wie die Zeilenposition des virtuellen Modus Datagridview ändern?
Ich bin mit Windows- Forms.
Lösung
Marcus Antwort ist richtig, aber Sie müssen auch die Datagridview die aktuelle Zelle Eigenschaft setzen ...
dgv.CurrentCell = dgv.Rows[0].Cells[0];
Ich glaube, das wird das Gitter bewegen. Auch als absolut sicher, Sie können diese hinzufügen, bevor die andere Zeile Code ...
dgv.CurrentCell = null;
Dadurch wird sichergestellt, dass, wenn die Zeile, die Sie wollen bereits die aktive Zeile ist aber nur aus der Sicht gescrollt, es wieder in Sicht bewegen wird.
Andere Tipps
Sie haben die alte Position zu löschen und einen neuen festlegen
Die Sammlung dataGridView1.SelectedRows hat die aktuell ausgewählten Zeilen. In Abhängigkeit von der Multiselect-Eigenschaft des Rasters können Sie eine Schleife haben durch alle Reihen in der SelectedRows und markieren Sie sie als nicht ausgewählt. Wenn Sie einzelne Auswahlmodus sind, nur die neue Zeile Einstellung wie ausgewählt wird, sollte die alte Auswahl löschen.
eine bestimmte Zeile wählen (in diesem Fall die einen bei Index 0) Sie fügen Sie einfach die Zeile dataGridView1.Rows [0] .Selected = true;
Sie scheinen nicht nur zu verlangen, die ausgewählte Zeile Einstellung, sondern auch die angezeigte Zeile. Sie können auf Ihrer Datagridview diese mit der FirstDisplayedScrollingRowIndex
Eigenschaft zugreifen. Eines der nützlichen Einstellungen:
int lastShown = FirstDisplayedScrollingRowIndex + DisplayedRowCount(false) - 2;
if (lastShown < yourIndex)
FirstDisplayedScrollingRowIndex += yourIndex - lastShown;
else if (FirstDisplayedScrollingRowIndex > yourIndex)
FirstDisplayedScrollingRowIndex = yourIndex;
Ihre neu gewählte Zeile verschwindet aus dem Bildschirm nicht sicher, beim Scrollen nach oben / unten programmatisch.
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
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