문제

DataGridView에서 여러 셀 편집을 지원하려고합니다. 편집이 완료 될 때 내용을 다른 셀에 올바르게 복사하기 때문에 거의 완료되었습니다. 내가 지금하고있는 것은 첫 번째 키를 캡처하는 것입니다.

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

첫 번째 키를 내 셀에 누르는 방법은 무엇입니까?

도움이 되었습니까?

해결책

나는 몇 가지 추가 실험을했고이를 수행 할 수있는 방법을 찾았습니다. 약간 조잡하지만 작동합니다.

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의 다른 처리를 수행하여 숫자를 만들지 만 나머지 부분과 관련이 없습니다.

다른 팁

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

private void dataGridView_KeyDown(Object sender, KeyEventArgs keyEventArgs)
{
   keyEventArgs.Handled = false;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top