Нужна помощь в редактировании нескольких ячеек в сетке данных - PullRequest
1 голос
/ 20 апреля 2009

Я пытаюсь поддержать редактирование нескольких ячеек в сетке данных. Я почти закончил, так как он правильно копирует содержимое в другие ячейки, когда редактирование завершено. То, над чем я сейчас работаю, это захват первой нажатой клавиши.

Когда я редактирую только одну ячейку, использование EditOnKeystrokeOrF2 работает нормально. Однако, когда выбрано несколько ячеек, я фиксирую событие Keydown и вручную вызываю BeginEdit. Однако когда я это делаю, нажатая клавиша не включается в редактирование.

Как мне нажать эту первую клавишу в моей камере?

Ответы [ 2 ]

1 голос
/ 20 апреля 2009

Я провел дополнительные эксперименты и нашел способ сделать это. Это немного небрежно, но это работает.

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 голосов
/ 20 апреля 2009

Может быть, достаточно отметить ключ как не обработанный.

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