将这段代码放入Form中
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
if(keyData == Keys.Enter)//通过回车键移到下一控件
{
if(this.ActiveControl.Parent is DataGrid)
{
SendKeys.Send("{DOWN}");
return true;
}
else if(!(this.ActiveControl is Button))
{
SendKeys.Send("{TAB}");
SendKeys.Send("{END}+{HOME}");
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
if(keyData == Keys.Enter)//通过回车键移到下一控件
{
if(this.ActiveControl.Parent is DataGrid)
{
SendKeys.Send("{DOWN}");
return true;
}
else if(!(this.ActiveControl is Button))
{
SendKeys.Send("{TAB}");
SendKeys.Send("{END}+{HOME}");
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
能告诉我DataGridTextBoxColumn.TextBox是怎样在KeyDown之前处理掉Enter,Tab,箭头等按键的吗?
它是System.Windows.Forms.TextBox,并没有重写过这个类,那肯定是在别的地方对它的按键输入进行了控制。