문제

가상 모드 DataGridView의 행 위치를 변경하는 방법은 무엇입니까?

나는 사용 중입니다 Windows 형태.

도움이 되었습니까?

해결책

Marcus의 답변은 정확하지만 DatagridView의 현재 셀 속성을 설정해야 할 수도 있습니다 ...

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

나는 이것이 그리드를 스크롤 할 것이라고 믿는다. 또한 절대적으로 안전하기 위해 다른 코드 라인 전에 이것을 추가 할 수 있습니다 ...

dgv.CurrentCell = null;

이렇게하면 원하는 행이 이미 활성 행이지만보기에서 스크롤하면 다시보기에 스크롤됩니다.

다른 팁

오래된 위치를 지우고 새 위치를 설정해야합니다.

Collection DatagridView1.SelectedRows에는 현재 선택된 행이 있습니다. 그리드의 다중 선택 속성에 따라 선택된 부의 모든 행을 루프하고 선택하지 않은 것으로 표시해야 할 수도 있습니다. 단일 선택 모드 인 경우 새 행을 선택한 것으로 설정하면 이전 선택이 지워집니다.

특정 행을 선택하려면 (이 경우 인덱스 0의 경우) 라인 DatagridView1.rows [0] .Selected = true;

선택한 행뿐만 아니라 표시된 행을 설정 해야하는 것 같습니다. 당신은 후자에 액세스 할 수 있습니다 FirstDisplayedScrollingRowIndex DatagridView의 속성. 유용한 설정 중 하나 :

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

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

프로그래밍 방식으로 위/아래로 스크롤 할 때 새로 선택한 행이 화면에서 사라지지 않도록합니다.

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top