【问题标题】:Need help editing multiple cells in a datagridview需要帮助在 datagridview 中编辑多个单元格
【发布时间】:2009-04-20 15:44:45
【问题描述】:

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

当我只编辑一个单元格时,使用 EditOnKeystrokeOrF2 可以正常工作。但是,选择多个小区时,我正在捕获键盘事件并手动调用开始。但是,当我这样做时,按下的键不包含在编辑中。

我怎样才能让我的单元格按下第一个键?

【问题讨论】:

    标签: c# datagridview cell


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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 哦,我认为这看起来很有希望。但是,当我尝试它时,它并没有帮助,而且看起来“Handled”属性已经是假的了。
      猜你喜欢
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      相关资源
      最近更新 更多