none
DataGridView单元格编辑时,按上下方向键无法触发KeyDown事件,各位大哥大姐帮帮忙 RRS feed

  • 问题

  • 源码如下:
          private DataGridViewTextBoxEditingControl EditingControl = null;

            private void dgvMain_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
               
                if (this.dgvMain.CurrentCell.RowIndex > -1)
                {
                    if (e.Control is DataGridViewTextBoxEditingControl)
                    {
                        this.EditingControl = (DataGridViewTextBoxEditingControl)e.Control;
                        //增加委托处理
                        this.EditingControl.KeyDown += new KeyEventHandler(this.EditingControl_KeyDown);             
                    }

                }

            }

            private void EditingControl_KeyDown(object sender, KeyEventArgs e)
            {
              //业务处理
              //按上下键时就是不触发该事件
            }

            private void dgvMain_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                if (this.EditingControl != null)
                {
                    EditingControl.KeyDown -= new KeyEventHandler(this.EditingControl_KeyDown);
                    this.EditingControl = null;
                }
            }
    2010年3月4日 9:30

答案

  • 你是按这个做的吧:
    http://www.pin5i.com/showtopic-14937.html
    主要原因是有些方向键做了功能键,用于在不同单元格中移动,这时不会再触发KeyDown事件了!
    周雪峰
    2010年3月4日 15:41
    版主
  • 你好!

    上下键事件被 dataGridView 默认为选中单元格的上下移动,这里使用 EditingControl 的 Validating Validated 事件是可以的。

    知识改变命运,奋斗成就人生!
    2010年3月5日 1:27
    版主
  • 非常感谢各位的回答
    问题已解决了 我把KeyDown换成PreviewKeyDown

    2010年3月5日 2:02

全部回复