为什么按Tab键会更改在组合框中选择的项目

时间:2014-02-27 09:10:44

标签: c# winforms combobox

我有2个 ComboBoxes ,里面有数据。当我在第一个组合框中写下项目名称的一些字母时,我按Tab键,焦点移动到下一个控件,但显示的项目与按Tab键之前的项目不同。在第二组合框中,数据与第一个中的选定项目相关,但检索到的数据基于选项卡之前选择的项目(未显示)。 我的问题是:为什么会这样?如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

请尝试将组合框DropDownStyle设置为DropDownList而不是DropDown。我希望这可以解决你的问题。

如果这不是您要搜索的内容,请尝试以下内容:

WPF ComboBox selection change after switching tabs http://www.telerik.com/forums/combobox-value-changes

答案 1 :(得分:0)

我知道这很老,但这是我发现与我的情况相符的唯一问题,并且找到了一个令我满意的解决方案。

实际上发生的是,在Winforms应用程序ComboBox中,Tab键围绕最终确定选择,仅移至下一个控件。因此,您的ComboBox最终被扔回到选择列表中似乎是随机项目的位置。这里的预期流程是找到您的项目,单击它或按Enter,然后按Tab。因此,我通过在拥有ComboBox的窗体上重写ProcessCmdKey来解决此问题,只要放下ComboBox即可强制Tab键表现为Enter。

这是我所定下的一个例子:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
        if (this.youComboBox.DroppedDown && keyData == Keys.Tab)
        {
            SendKeys.Send("{ENTER}");
            return true;
        }
        return base.ProcessCmdKey(ref msg, keyData);
    }