Frage

Wie die Zeilenposition des virtuellen Modus Datagridview ändern?

Ich bin mit Windows- Forms.

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top