프로그래밍 방식으로 DataGridView에서 행 선택


답변:


127

테스트되지 않았지만 다음을 수행 할 수 있다고 생각합니다.

dataGrid.Rows[index].Selected = true;

또는 다음을 수행 할 수 있습니다 (다시 테스트하지 않음).

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
    if(YOUR CONDITION)
       row.Selected = true;
}

당신의 DataGridView를 경우주의 read-only다음 - SelectedRows.Clear()작동하지 않습니다.
Derek W

14
SelectedRows.Clear () 대신 datagridview 인스턴스의 ClearSelection () 메서드를 사용합니다
Furkan

1
@Furkan : 그것은 같은 일을하지 않습니다. 으로 SelectedRows.Clear()만 선택한 행이 삭제되지만으로 ClearSelection()도 열 => 열 선택은 ... 손실
크리스토프 핑크를

17
코드 한 줄 추가dataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless : 제안을 테스트 할 때 SelectionChanged 이벤트가 트리거되지 않는 것 같습니다.
user2430797

34

Visual Basic에서이 작업을 수행하여 DataGridView; 선택한 행이 강조 표시된 색상으로 표시되지만 커서 위치는 변경되지 않습니다.

Grid.Rows(0).Selected = True

이렇게하면 커서 위치가 변경됩니다.

Grid.CurrentCell = Grid.Rows(0).Cells(0)

위의 행을 결합하면 커서가 배치되고 행이 선택됩니다. 다음은의 행에 초점을 맞추고 선택하는 표준 절차입니다 DataGridView.

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True

Grid.Rows (0) .Cells (0)은 그리드 표시 영역보다 긴 그리드 데이터의 경우 매우 유용합니다. 위에서 언급 한 순서는 필요하지 않습니다. 행 / 셀 선택을 위해 코드를 스 와이프 할 수 있습니다. [source : Personally Tested]
BiLaL

그리드를 선택한 위치로 이동하는 방법은 무엇입니까? 행이 선택되었지만 그리드 위치가 선택한 행에 없습니다. 수동으로 스크롤하면 선택한 행이 표시됩니다. 그리드를 강제로 스크롤하는 방법은 무엇입니까?
FrenkyB

참조 : FirstDisplayedScrollingRowIndex
Rodrigo T.

12
DataGridView.Rows
    .OfType<DataGridViewRow>()
     .Where(x => (int)x.Cells["Id"].Value == pId)
     .ToArray<DataGridViewRow>()[0]
     .Selected = true;

0
 <GridViewName>.ClearSelection(); ----------------------------------------------------1
 foreach(var item in itemList) -------------------------------------------------------2
 {
    rowHandle =<GridViewName>.LocateByValue("UniqueProperty_Name", item.unique_id );--3
    if (rowHandle != GridControl.InvalidRowHandle)------------------------------------4
    {
        <GridViewName>.SelectRow(rowHandle);------------------------------------ -----5
    }
  }
  1. 이전 선택을 모두 지 웁니다.
  2. 그리드에서 선택해야하는 행을 반복합니다.
  3. 그리드에서 행 핸들 가져 오기 (여기서 그리드는 이미 새 행으로 업데이트 됨)
  4. 행 핸들이 유효한지 확인합니다.
  5. 유효한 행 핸들이 있으면 선택하십시오.

여기서 itemList는 격자보기에서 선택할 행 목록입니다.




-1

로드시 DataGridView의 Selected 행을 설정할 때 기본적으로 덮어 쓸 수 있으므로 DataBindingComplete 이벤트에서이를 처리하는 것이 좋습니다.


-1

이 시도:

DataGridViewRow row = dataGridView1.Rows[index row you want];
dataGridView1.CurrentRow = row;

이 도움을 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.