SelectNextControl不在telerik下拉列表中工作

时间:2017-03-25 22:49:56

标签: c# winforms telerik

VS 2017 - Windows窗体应用 - 当前的Telerik Controls

我有一个表单,我希望用户能够按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来选择当前项目。 因此,我尝试执行以下操作以检查我是否在该控件中,只需手动选择适当的控件:

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会显示所选内容中的文本,因此我假设我正在寻找正确的位置。

btw ...事件按预期启动,SelectNextControl无效。 更新:我有一个解决方法,但我确信这不是正确的解决方法:

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

1 个答案:

答案 0 :(得分:0)

如果有更好的方法可以做到这一点我已经过了足够的时间我假设有人会发布它。

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

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