protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if(keyData.Equals(System.Windows.Forms.Keys.Enter))
{
SendKeys.Send("{Tab}");
} }

}
return base.ProcessCmdKey (ref msg, keyData);
}
单元格具有"enter"变为"tab"的功能.
但是出现两种情况:
1.在单元格内容没有发生变化时能达到我所希望的回车后在本行变为"tab",这个不用管。
2.在单元格内容变化时,回车后虽然也执行了"tab"功能,但是焦点跑到了下一行去了。问题是:如何在单元格内容变化时,回车后也能在本行执行"tab"功能。

解决方案 »

  1.   

    5.65 How can I make the Enter Key behave like the Tab Key and move to the next cell? 
    [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); 
     
              } 
     
         } 
     
     
      

  2.   

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
    if(keyData.Equals(System.Windows.Forms.Keys.Enter))
    {
    SendKeys.Send("{Tab}");
    }
    else
    {
    return base.ProcessCmdKey (ref msg, keyData);
    }
    }可能是响应Enter时相当于连续按了Tab,Enter导致的吧?
    具体我没环境没测试.