2009-04-20 7 views
1

DataGridview에서 여러 셀을 편집하는 것을 지원하려고합니다. 편집이 완료되면 내용을 다른 셀로 올바르게 복사하므로 거의 완성되었습니다. 내가 지금하고있는 것은 첫 번째 키를 누른다.DataGridview에서 여러 셀을 편집하는 데 도움이 필요합니다.

EditOnKeystrokeOrF2를 사용하면 하나의 셀만 편집 할 때 정상적으로 작동합니다. 그러나 여러 셀을 선택하면 Keydown 이벤트를 캡처하고 수동으로 BeginEdit를 호출합니다. 그러나 이렇게하면 편집 된 키가 편집에 포함되지 않습니다.

어떻게하면 첫 번째 키를 셀에 누를 수 있습니까?

답변

1

나는 몇 가지 추가 실험을 수행했으며이를 수행하는 방법을 발견했습니다. 조금 엉성함이 있지만 작동합니다.

private int _keyValue; 
private Boolean _checkKeyValue = false; 

private void Grid1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) 
{ 
    DataGridViewCell cell = Grid1.Rows[e.RowIndex].Cells[e.ColumnIndex]; 

    if (_checkKeyValue) 
    { 
     _checkKeyValue = false; 

     if (value != -1) 
     { 
      cell.Value = _keyValue; 
     } 
    } 
} 

private void Grid1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (Grid1.SelectedCells.Count > 1) 
     { 
      _checkKeyValue = true; 
      _keyValue = (int)e.KeyValue; 
      Grid1.BeginEdit(false); 
     } 
} 

CellBeginEdit 이벤트에 등록하면 해당 값을 플롭 할 수 있습니다. 숫자를 만들기 위해 _keyValue의 다른 처리를 수행하지만 나머지는 관련이 없습니다.

0

키를 처리하지 않은 것으로 표시하는 것이 충분할 수 있습니다.

private void dataGridView_KeyDown(Object sender, KeyEventArgs keyEventArgs) 
{ 
    keyEventArgs.Handled = false; 
} 
+0

오우, 유망 해 보였습니다. 그러나, 그것을 시도 할 때, 그것은 도움이되지 않았고, "Handled"속성이 이미 거짓이었던 것처럼 보였다. –

관련 문제