Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要帮助在datagridview中编辑多个单元格吗_C#_Datagridview_Cell - Fatal编程技术网

C# 需要帮助在datagridview中编辑多个单元格吗

C# 需要帮助在datagridview中编辑多个单元格吗,c#,datagridview,cell,C#,Datagridview,Cell,我试图支持在datagridview上编辑多个单元格。我几乎完成了,因为编辑完成后,它会正确地将内容复制到其他单元格。我现在正在做的是捕捉按下的第一个键 当我只编辑一个单元格时,使用EditOnKeystrokeOrF2可以很好地工作。但是,当选择多个单元格时,我将捕获Keydown事件并手动调用BeginEdit。但是,当我这样做时,按下的键不包括在编辑中 如何将第一个键按入我的单元格?可能只需将该键标记为未处理即可 private void dataGridView_KeyDown(Obje

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

当我只编辑一个单元格时,使用EditOnKeystrokeOrF2可以很好地工作。但是,当选择多个单元格时,我将捕获Keydown事件并手动调用BeginEdit。但是,当我这样做时,按下的键不包括在编辑中


如何将第一个键按入我的单元格?

可能只需将该键标记为未处理即可

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

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

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

我做了一些额外的实验,并找到了实现这一点的方法。这有点草率,但它确实有效

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

Ooh,我认为这看起来很有希望。但是,当我尝试它时,它没有帮助,而且看起来“处理”属性已经是错误的。哦,我认为这看起来很有希望。但是,当我尝试它时,它没有帮助,而且看起来“处理”属性已经是错误的。