가상 모드 DataGridView의 행 위치를 변경하는 방법은 무엇입니까?
-
05-07-2019 - |
문제
가상 모드 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
제휴하지 않습니다 StackOverflow