C# 将自定义控件与Override ProcessCmdKey一起使用时,Tab键发送两次

C# 将自定义控件与Override ProcessCmdKey一起使用时,Tab键发送两次,c#,.net,winforms,C#,.net,Winforms,我使用此代码覆盖ProcessCmdKey protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (keyData == (Keys.Enter)) { SendKeys.Send("{TAB}"); } return base.ProcessCmdKey(ref msg, keyData); } 除了一件事之外,所有的工作都很好。我使用的是一个自定义控

我使用此代码覆盖ProcessCmdKey

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Enter))
    {
        SendKeys.Send("{TAB}");
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

除了一件事之外,所有的工作都很好。我使用的是一个自定义控件,一个带有自动建议列表的自定义文本框(如组合框样式)。当我在自定义控件上键入并按enter键选择项目时,该项目被正确选择,但它会发送两次选项卡。它将聚焦于第二个文本框,而不是第一个文本框。我已经检查了选项卡索引,并且正确编号。

我认为在发送
选项卡后,您需要返回
true
,当我在send键后输入return true时,它将转到/tab下一个文本框,但没有选择我选择的项目。请检查控件的
TabIndex
属性值。如上所述,TabIndex编号是可以的。