我有一个自定义控件MyLookUpEdit,它继承了Devexpress LookUpEdit。
在MyLookUpEdit中,我有以下方法:
protected override bool ProcessDialogKey(Keys keyData)
我在表单上使用这个自定义控件(我们称之为nameLookUpEdit)。当我浏览控件时,我看到ProcessDialogKey被调用,它根据tabIndex聚焦到下一个控件。
现在我们希望当按下enter时,我们的控件的行为与按下的tab完全相同。我想我应该在MyLookUpEdit中添加以下方法之一:
protected override void OnKeyDown(KeyEventArgs e)
或
protected override void OnEditorKeyDown(KeyEventArgs e)
并捕获回车键,因此显式调用ProcessDialogKey:
{
if(e.KeyData == Keys.Enter)
{
ProcessDialogKey(Keys.Tab);
}
base....
}
但是当我测试它时,我发现当nameLookUpEdit当前正在聚焦时,我按下回车键,onKeyDown和onEditorKeyDown都不会被调用。
为什么会这样?
让输入行为与标签相同的正确方法是什么?
答案 0 :(得分:0)
尝试覆盖ProcesscmdKey?
编辑:添加了返回语句的正确性。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Enter)
{
//do stuff
}
return base.ProcessCmdKey(ref msg, keyData);
}