问题:
重写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);
这才叫转换。。。