2010-06-15 4 views
0

해당 행을 더블 클릭 한 후 DataGridView에서 행을 선택하려면 C#의 스 니펫 코드가 필요합니다.선택된 사용자가 클릭하는 DataGridview 행 유지

지금 데이터 세트의 데이터를 표시하고 있으며 선택 모드는 FullRowSelect입니다. 이것을 설정하는 방법은 무엇입니까?

  1. 매번 타이머가 선택한 행은 항상있는 DataGridView의 첫 번째 행으로 이동 틱 :

    을 처리하는 두 가지 시나리오가 있습니다.

  2. 일단 행을 클릭하면 해당 행이 선택되지만 타이머가 틱하면 선택한 행이 첫 번째 행으로 이동합니다.

도움 주셔서 감사합니다. 데이터 세트 및 선택 모드에서

초보자 프로그래머

답변

0

지금 내가 표시하고있어 데이터 FullRowSelect입니다. 이것을 설정하는 방법은 무엇입니까?

DataGridView.SelectionMode 속성은 DataGridViewSelectionMode 열거를 통해이를 수행합니다.

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 

기타 질문에 대해서는 세부 정보가 필요합니다. 어떤 행동을하고 있니?

편집 # 의견으로 당 1

: 나는 새로운 형태가 열립니다 연속으로 클릭 한 후

. 문제는 타이머가 활성화 될 때마다 populate_DatagridView 메서드가 호출되고 선택된 행이 클릭 된 행을 유지하는 대신 첫 번째 행에 위치한다는 것입니다.

하나의 해결책이 될 수 다음

private _dataGridViewRowSelectedIndex; 

private void dataGridview1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { 
    DataGridView dgv = (DataGridview)sender; 
    if (dgv.Rows.GetRowState(e.RowIndex) == DataGridViewElementStates.Selected) 
     _dataGridViewRowSelectedIndex = e.RowIndex; 

    // Open your form here... 

    // And when your form returns... 
    // Set the selected index like so 
    dgv.Rows[_dataGridViewRowSelectedIndex].Selected = true; 
} 

이 도움이 당신에게 밖으로합니까?

+0

행을 클릭하면 새 양식이 열립니다. 문제는 타이머가 활성화 될 때마다 populate_DatagridView 메서드가 호출되고 선택된 행이 클릭 된 행을 유지하는 대신 첫 번째 행에 위치한다는 것입니다. – user367509

+0

답변을 주셔서 감사합니다.하지만 많이 읽은 후에 제 문제를 더 잘 설명 할 수 있다고 생각합니다. 내 문제는 데이터의 실현 외에 populate_datagridview 메서드를 호출 할 때마다 현재 행이나 클릭 된 행을 선택하지 않고 DataGrid의 첫 번째 행을 선택한다는 것입니다. 기본적으로, 내가 필요한 것은 FirstDisplayedScrollingRowIndex를 현재 행 인덱스로 업데이트하는 것입니다. – user367509

+0

기본적으로 내 코드 샘플은 무엇입니까? 큰 차이가 있습니까? 아마 내가 모르는 뭔가가있을거야. 그렇다면 공유해 주셔서 감사합니다. =) –

1

당신은 함수 선택된 행이 변경되지 않습니다이 방법 timer_tick

private void timer3_Tick(object sender, EventArgs e) 
    { 
     int rowIndex; 

     if (dgvOrdini.Rows.Count == 0) //here I check if the dgv is empty 
      rowIndex = 0; 
     else 
     // I save the index of the current row in rowIndex 
     rowIndex = this.dgvOrdini.CurrentCell.RowIndex; 

     ....... 
     ....... 
     if (dgvOrdini.Rows.Count != 0) //Now if the dgv is not empty 
      //I set my rowIndex 
      dgvOrdini.CurrentCell = dgvOrdini.Rows[rowIndex].Cells[0];  
    } 

에서 수행해야합니다.

1

시도해보십시오.

if (index != -1) //if index == -1 then you don't have rows in your datagrid 
{ 
yourdatagridview.Rows[index].Selected = true; 
} 

그것은 작품의 : 먼저 당신이 selecvted 행을 설정해야 업데이트 한 후

가 ... 지금 당신이있는 DataGridView를 업데이트 할 수 있습니다 실제로

int index = -1 //set the index to negative (because if you have only 1 row in your grid, this is a zero index 
if (yourdatagridview.Rows.Count > 0) //if you have rows in datagrid 
{ 
index = yourdatagridview.SelectedRows[0].Index; //then save index into variable 
} 

을 선택한 행의 인덱스를 저장!

관련 문제