在KeyDown事件里判断如果是回车键则跳到下一个单元格

解决方案 »

  1.   

    protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
    {
    if(keyData == Keys.Enter)//通过回车键移到下一控件

    if(this.ActiveControl.Parent is DataGrid)
    {
    SendKeys.Send("{DOWN}");
    return true;
    }
    else if(!(this.ActiveControl is Button))
    {
    SendKeys.Send("{TAB}"); 
    return true;
    }
    }
    return base.ProcessCmdKey(ref msg, keyData);
    }
      

  2.   

    覆盖ProcessCMDKey方法
    [C#] 
          public class MyDataGrid : DataGrid 
          { 
               protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData) 
               { 
                    if(msg.WParam.ToInt32() == (int) Keys.Enter) 
                    { 
                         SendKeys.Send("{Tab}"); 
                         return true; 
                    } 
                    return base.ProcessCmdKey(ref msg, keyData); 
               } 
          } 
       
    [VB.NET] 
     
         Public Class MyDataGrid Inherits DataGrid 
              Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean 
                   If msg.WParam.ToInt32() = CInt(Keys.Enter) Then 
                        SendKeys.Send("{Tab}") 
                        Return True 
                   End If 
                   Return MyBase.ProcessCmdKey(msg, keyData) 
              End Function 'ProcessCmdKey 
         End Class 'MyDataGrid
     
      

  3.   

    终于解决了困扰我多日的问题。非常感谢boboshu888。