重写ProcessCmdKey方法:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.Enter : //发送tab
SendKeys.Send("{tab}");
break;
}
return base.ProcessCmdKey (ref msg, keyData);
}现在我在多行文本框里想加个回车,换行是换行了,可都跳到下一个焦点去了,怎么不让焦点到下一个控件??

解决方案 »

  1.   

    你判断一下不就行了嘛。switch (keyData)
    {
    case Keys.Enter : //发送tab
                           if(!this.Multiline)//如果是单行文本才发送
       SendKeys.Send("{tab}");
    break;
    }
      

  2.   

    若是把回车换成TAB则可以这样
    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
      if keyData = Keys.Enter//发送tab
      {
        SendKeys.Send("{tab}");
        return true
      }
      return base.ProcessCmdKey (ref msg, keyData);
    }
      

  3.   

    楼上的,准确来说,你那不叫转换if(m.Msg == WM_KEYDOWN&& keyCode == Keys.Enter )
    {
    m.WParam=(IntPtr)Keys.Tab
    }
    return base.ProcessKeyPreview(ref m);
    这才叫转换