Нужна помощь в редактировании нескольких ячеек в datagridview

StackOverflow https://stackoverflow.com/questions/768851

  •  12-09-2019
  •  | 
  •  

Вопрос

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

Когда я редактирую только одну ячейку, использование EditOnKeystrokeOrF2 работает нормально.Однако, когда выбрано несколько ячеек, я фиксирую событие Keydown и вручную вызываю 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