我想支持一个DataGridView编辑多个单元格。我很接近完成,因为它正确地复制内容,其他单元格时,编辑完成。我现在所工作的是捕获按下第一个键。

当我编辑只是一个细胞,使用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