基于需求,我想实现成datagridview的单元格捕获key.enter消息后,同一行的下一单元格处于活动状态,如果是最后一个单元格,捕获key.enter后则下一行的第一单元格,如果是newrow则屏蔽单元格的往下移操作。
这需要重写datagridview的键盘消息事件`

解决方案 »

  1.   

    重写DataGridView的ProcessCmdKey事件、OnKeyUp事件
    先让回车键与Tab键一样效果,好让DataGridView按回车键时,单元格是横着走的
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
         if(keyData==Keys.Enter){
    System.Windows.Forms.SendKeys.Send("{Tab}");
          }
          else
    return base.ProcessCmdKey(ref msg, keyData);
    }

    protected override void OnKeyUp(KeyEventArgs e)
    {
           base.OnKeyUp(e);

           if(e.KeyCode == Keys.Enter)
           {
    //写代码 判断是不是最后一列要换行,如果是最后一行就不作操作
    //...
            }
    }
      

  2.   

    datagridview 里根本没有ProcessCmdKey这个事件,怎么重写啊!