//用ENTER键代替TAB键
protected override bool ProcessCmdKey(ref Message msg,Keys keyData)
{
if ( (!(ActiveControl is Button)) && (keyData==Keys.Up || keyData==Keys.Down || keyData==Keys.Enter))
{
if(keyData == Keys.Enter)
{
System.Windows.Forms.SendKeys.Send("{TAB}");
return true;
}
if(keyData==Keys.Down )
System.Windows.Forms.SendKeys.Send("{TAB}");
else
SendKeys.Send("+{Tab}");
return true;
}
else
return base.ProcessCmdKey(ref msg,keyData);
}

解决方案 »

  1.   

    设置TabIndex属性,在代码中用SendKeys.Send("{Tab}");
      

  2.   

    上面的的老兄,应是这样吧,呵呵:
    protected override bool ProcessCmdKey(ref Message msg,Keys keyData)
    {
    if ( (ActiveControl is Button) && keyData==Keys.Enter)
    {
    System.Windows.Forms.SendKeys.Send("{TAB}");
    return true;
    }
    else
    {
    return base.ProcessCmdKey(ref msg,keyData);
    }
    }
      

  3.   

    当ActiveControl is Button为true时执行是楼主要的啊.
      

  4.   

    谢trnbo(我的目标是没有蛀牙) 了。不过,不想用此法,有其他方式吗?(不使用系统Message)
      

  5.   

    这个方法并没有用到系统的消息,只不过是你又传了进去,如果楼主不想这么用,那么可能要对每一个按纽写一个选择下一个控件的方法了,比如在一个按纽的事件处理中用this.textBox1.Focus()之类的.这样不是很烦吗?