Form中的如下代码将回车转换为tab键:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{ if (keyData == Keys.Enter)
{
System.Windows.Forms.SendKeys.Send("{tab}");
return true;
}
if (keyData == Keys.Escape)
{
this.Close();
return true;
} return base.ProcessCmdKey(ref msg, keyData);
}
但是在按钮上敲回车通常不做这样的转换,怎么办呢?

解决方案 »

  1.   

    判断按钮焦点来实现,,
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
    if((this.按钮1.Focused) || (this.按钮2.Focused))
    {
       return false;
    }
    else
    {
                  if(keyData == Keys.Enter)
         {
            SendKeys.Send("{TAB}");
            return true;
          }
     }
     return false;
    }
      

  2.   


    偶的做法是继承 textBox 控件,并 override textBox 的ProcessCmdKey,
    封装出一个自己的textBox控件.
      

  3.   

    以上的做法没有从根本上解决问题
    wmt85(深山老翁) :重写的方法不应该直接访问按钮的
    leo2003(C# Coder) :代码改动量太大了不能根据ref Message msg判断消息源的类型吗?