SelectNextControl 不适用于 telerik 下拉列表

SelectNextControl not working on telerik drop down list

VS 2017 - Windows 表单应用 - 当前 Telerik 控件

我有一个表单,我希望用户能够通过按 Enter(或 Tab)移动到下一个控件。 选项卡工作正常。

为了启用输入功能,我正在这样做:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{      
    if (ActiveControl.Name.ToString() != "order_creation_grid") //ensures that we don't caputre keypresses in the grid
    {
        if (keyData == Keys.Enter)
        {
            this.SelectNextControl((Control)ActiveControl, true, true, true, true);

这很好用,除了在下拉列表框中。 我认为这是因为列表框使用 Enter 来 select 当前项目。 所以,我尝试执行以下操作来检查我是否在该控件中,并且只是手动 select 正确的控件:

if (ActiveControl.Name.ToString() != "order_creation_grid") //ensures that we don't caputre keypresses in the grid
{
    if (keyData == Keys.Enter)
    {

            if (ActiveControl.Name.ToString() == "order_address_dd")
            {
                order_city_eb.Select();
            }
            else
            {
                this.SelectNextControl((Control)ActiveControl, true, true, true, true);
            }
    }

问题是未设置 ActiveControl.Name - 它显示“”。

ActiveControl.SelectedItem 确实在下拉列表中显示了 selected 的文本,所以我假设我找对了地方。

顺便说一句...事件确实按预期触发,SelectNextControl 不工作。 更新:我有一个解决方法,但我确信这不是解决此问题的正确方法:

if (ActiveControl.Parent.Name.ToString() == "order_address_dd")
{
    SendKeys.Send("{TAB}");
}
else
{
    this.SelectNextControl((Control)ActiveControl, true, true, true, true);
}

如果有更好的方法来做到这一点,时间已经过去了,我想有人会发布它。

这是我正在使用的解决方案,它运行良好:

if (ActiveControl.Parent.Name.ToString() == "order_address_dd")
{
    SendKeys.Send("{TAB}");
}
else
{
    this.SelectNextControl((Control)ActiveControl, true, true, true, true);
}