1

我正在尝试支持在 datagridview 上编辑多个单元格。我几乎完成了,因为它在编辑完成后正确地将内容复制到其他单元格。我现在正在做的是捕获按下的第一个键。

当我只编辑一个单元格时,使用 EditOnKeystrokeOrF2 可以正常工作。However, when multiple cells are selected, I am capturing the Keydown event and manually calling BeginEdit. 但是,当我这样做时,按下的键不包含在编辑中。

我怎样才能将第一个键按到我的单元格中?

4

2 回答 2

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 进行了一些其他处理以使其成为一个数字,但这与其余部分无关。

于 2009-04-20T19:23:38.377 回答
0

可能将密钥标记为未处理就足够了。

private void dataGridView_KeyDown(Object sender, KeyEventArgs keyEventArgs)
{
   keyEventArgs.Handled = false;
}
于 2009-04-20T15:54:02.903 回答